1
"스택"이라는 목록 구조가 있습니다. 왜 나는 성냥을 얻지 못합니까?
stack([[s]],[np,[noun,john]])
내가 추적을 실행이있어, 그 어떤 스택이 유지 될 것으로 예상되는 : 문제를 일으키는 내 프로그램의 시점에서
,이 스택 보유 것입니다.
이 규칙과 일치해야하는 다음 규칙을 작성할 때.
if
buffer([[Word|_]])
and aux(Word)
and stack([s],[np,[noun, john]])
이렇게하면 규칙이 다음과 같이 실행됩니다. 하지만 여기서 "and stack ([[s]], [np, [noun, john]])"대신에 변수를 사용해야합니다. 그러나 다른 것을 사용하려고하면 규칙이 실행되지 않습니다. 나는 이유를 해결할 수 없다. 목록에서 변수를 사용할 때 다른 규칙이 제대로 작동합니다.
은 필자 내가이 문제를 원인을 완전히 확실하지 않다
stack([s]|Foo)
stack([s]|[Foo])
stack([MyHead]|[MyTail]... and literally every other combination I can think of.
을 시도
감사합니다 얻을 것이다 통일 연산자 (=)/2
의 평균에 의해, 통일을 시도 할 수 있습니다; 나는 당신의 제안을 시도했지만이 오류가 발생합니다 "구문 오류 : 연산자 우선 순위 충돌"어떤 아이디어? – yoonsi
나는 SWI-Prolog와 Gnu Prolog를 모두 시험해 보았다. 둘 다 예상대로 일했다. 어떤 시스템을 사용하고 있으며, 프롬프트가 끝나면 정확히 무엇을 썼습니까? – CapelliC