「スタック」と呼ばれるリスト構造があります。
問題を引き起こしている私のプログラムの時点で、これはスタックが保持するものです:
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.
何がこの問題を引き起こしているのか完全にはわかりません