变量=术语复合序言

时间:2019-01-13 09:50:31

标签: prolog

在序言中是否可以进行类似Variable = TermCompound的赋值?

例如:X =令牌(a,b,c)。

而且,如果可以的话,是否可以从X推导复合项的参数和函子?

1 个答案:

答案 0 :(得分:2)

请参阅有关ISO标准谓词=/2functor/3=../2arg/3的Prolog系统文档。通话示例:

| ?- X = token(a, b, c).

X = token(a,b,c)

yes
| ?- X = token(a, b, c), functor(X, Name, Arity). 

Arity = 3
Name = token
X = token(a,b,c)

yes
| ?- X = token(a, b, c), X =.. [Name| Arguments].      

Arguments = [a,b,c]
Name = token
X = token(a,b,c)

yes
| ?- X = token(a, b, c), arg(2, X, Argument).    

Argument = b
X = token(a,b,c)

yes