2015-02-04 15 views
0

나는 프롤로그에서 공부할 과제를 해결하는 방법은 무엇입니까?

Y=.(.(1,[],.(2,.(a,.(b,[])))). 

Y은 무엇입니까 프롤로그

에서 공부하는 작업이? 어떻게 해결할 수 있습니까?

+0

'Y'는 변수입니다. 표현식은 Learn Prolog Now!에서 [9.2 Terms of a Special Notation] (http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse38)을 참조하십시오! – lurker

+0

왼쪽 괄호 5 개와 오른쪽 괄호 4 개만 있습니다. 또한 (최소한 SWI에서)'= .' 표기법은'=. '과 동일하지 않습니다. –

답변

2

오타가 있습니다. .은 바이너리 펑터입니다. 항상 2 개의 인수 만 가져야합니다.

Y=.(.(1,[] , .(2, .(a, .(b,[])))). 
Y=.(.(1,[]), .(2, .(a, .(b,[])))). 
    -------   ------- 
        ------------- 
      ------------------- 

테스트 :

2 ?- Y = .(.(1,[]), .(2, .(a, .(b,[])))). 
Y = [[1], 2, a, b]. 

Y 논리 변수들은 두 개의 서로 다른 통신 사업자가 아닌 하나의 운영자로 여기에 사용 된 바와 같은, =. 사이의 공간이 있어야한다. Prolog는 그것을 풀지 않습니다. =/2 performs a unification 그리고 결과적으로 여기서 논리 변수 Y은 값으로 인스턴스화됩니다. 여기서 복합 용어는 분명히 목록을 기술합니다.

+0

논리 변수? 실제로 목록입니다 .. –

+0

@EugeneSh. 'Y'는리스트로 인스턴스화되는 * 논리 변수 *입니다. – lurker

+0

@lurker 논리 변수가 부울 변수를 참조하지 않습니까? –

관련 문제