如何在prolog中建立一个谓词,接收一个数字和一个列表,我必须通过尾巴将数字插入列表中。
我试过在列表中用头部插入数字。insert(H,[P|Q],[H,P|Q]).
但我怎么能用尾部插入呢?
S2
". 这个值被传递给
ins_tail([], N, [N]).
ins_tail([H|T], N, [H|R]) :- ins_tail(T, N, R).
S3S2append/3
.
S3 是一个参数 因为它也是 "无论延伸 S1",鉴于我们的规则。但是...
S1, S2
S3L-E
不一定 L
投入E
或
L = [ V1, ..., Vn | E]
产出E-E
在整个过程中,它们是统一的,在这个过程中也会发生回溯(你可以解析含糊不清的语法)。它们最终会与列表统一起来。E
当我们遇到箭头右侧的列表时,差异列表就会发挥作用。E
上面的规则被翻译成:X
这意味着
E = [X|F]
将它的第一个参数与一个开放式的列表统一起来,这个列表的尾巴是 L-F
其他规则将统一 F
. 一般来说,你会发现 []
εL
规则,这些规则与 L
.[W1, ..., Wm |L]-E
以上都是通过宏来完成的,一个典型的错误是试图在你的数据上调用一个辅助谓词,这就失败了,因为转换增加了两个参数(对
实际上是呼吁
以避免把前缀当作规则。 -->
下面是另一种选择。
sentence --> noun_phrase, verb_phrase.