2012-01-24 3 views
2

두 용어 [a, b, c, d, e]와 [[X] | [b, c, d, e]] 통일 될 수 있습니까? 나는 당신이 어떤 식 으로든 [X] = a를 얻을 수 없기 때문에 그들이 아니라고 생각하는 확인이 필요합니까?통일 할 수있는 프롤로그 용어

답변

2

[X | [b,c,d,e]]이 아니라 [[X] | [b,c,d,e]]이 아니라면 X=a이 아니라 [X]=a이 아닌 것으로 통합해야한다고 생각합니다.

3

올바른 가정은 [X]이며 .(X,[])으로 다시 쓸 수 있습니다. a 원자로 통합 할 수 없습니다.

[X|[b,c,d,e]].(_G231,.(b,.(c,.(d,.(e,[]))))), 즉 [X,a,b,c,d,e]으로 다시 쓸 수 있습니다.

display/1을 사용하여 구문 설탕없이 모양을 검사 할 수 있습니다.

1

X가 어떤 이유로 든 목록에 포함되어야하는 경우이를 통합 할 수 없습니다 (chac에서 설명한대로). append 술어를 사용하여 일치 항목을 얻을 수 있습니다.

?- append([X], [b,c,d,e], [a,b,c,d,e]). 
X = a