2012-10-29 18 views
0

누군가 Lisp에서 andor 연산자가 어떻게 작동하는지 설명 할 수 있습니까?어떻게 논리 연산자 및/또는 작동합니까?

의 내가 함수가 있다고 가정하자 나는 네 개의 인수 사 개 인수에서

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'만이 위증입니다.'(그리고 11); => 1 (그리고 nil 1); => nil (및 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이 거짓이라고 가정합니다. 여기

는 사실이다와 B에 해당하는 경우

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

그래서, 다음 & & b는 사실이다 (일명 & & 많은 프로그래밍 언어) 논리 AND 연산자에 대한 진리표이다.

OR 연산자는 여기에 약간 다르게 를 작동 한 후, A는 사실 또는 B에 해당하는 경우,

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

그래서 (많은 프로그래밍 언어 || 일명) 논리적 OR 연산자의 진리표이다 또는 b가 참입니다.

당신은 유사한 방식으로 작동 위의 문.

AND4 (x1 x2 x3 x4) 

모든 변수가 참인 경우에만 위의 결과는 1 (참)을 반환합니다.

OR4 (x1 x2 x3 x4) 

abvove는 변수 중 하나 이상이 참이면 1 (참)을 반환합니다.

+0

당신의 설명을 좋아합니다 –

+1

있음 마지막에 OR4의 설명, 그것은에 "... 만 적어도 하나의 경우 경우"또는 "변수 중 하나에 해당하는 경우에만 경우"변화하는 가치가있을 수도 있습니다 "경우에만 어떠한 경우 ...". 현재의 설명은 마치 "정확히 하나"를 뜻하는 것처럼 오독 될 수 있습니다. – Ben

+0

나중에 나는 너의 요점을 얻은 것 같아 ... 아이디어 주셔서 감사합니다. –