2012-10-29 59 views
0

有人可以向我解釋andor運營商如何在Lisp中工作嗎?邏輯運算符和/或工作如何?

比方說,我有一個功能,我想從四個參數

and4 (x1 x2 x3 x4) 

or4 (x1 x2 x3 x4) 

與功能and吻合且or從四個參數寫一個函數的條件表達式的組成,有人可以解釋我如何與他們聯繫或想出如下這樣的事情:

and4(1,1,1,1) => 1 
and4(1,0,1,1) => 0 
or4(1,1,1,1) => 1 
or4(0,0,1,0) => 1 

我只是對如何理解andor操作符或甚至示例的簡單解釋感興趣。

+0

你的問題對我來說並不完全清楚。你應該知道在Common Lisp中0不是一個虛假值。只有'nil'是虛假的:'(and 1 1); => 1(and nil 1); =>零(和1 0); => 0'有幫助嗎? – Lex

+1

AND和OR是Lisp中的宏,而不是常規函數。見http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/faq/lisp_3.faq,部分'[3-2]' – finnw

回答

1

那麼,你必須開始簡單。

假設數字1爲真,並且0爲假。

這裏是邏輯運算符的真值表(又名& &在許多編程語言)

a | b | a AND b 
0 | 0 | 0 
0 | 1 | 0 
1 | 0 | 0 
1 | 1 | 1 

因此,如果是真實的,B是真實的,那麼& & b爲真。

OR操作符的工作方式略有不同 這裏是邏輯OR運算符的真值表(又名||許多編程語言)

a | b | a OR b 
0 | 0 | 0 
0 | 1 | 1 
1 | 0 | 1 
1 | 1 | 1 

因此,如果爲真或B真,則或者b是真的。

上面列出的陳述以類似的方式工作。

AND4 (x1 x2 x3 x4) 

當且僅當所有的變量都爲真時,上述才返回1(真)

OR4 (x1 x2 x3 x4) 

如果至少有一個變量是真的,abvove將返回1(真)

+0

我喜歡你的解釋 –

+1

In在最後對OR4的描述時,「當且僅當其中一個變量爲真」改爲「當且僅當至少一個...」或「當且僅當任意...」時,值得改變。當前的描述可能會被誤讀,就像您的意思是「完全一樣」。 – Ben

+0

雅我想我明白你的意思了......感謝你的想法 –