Prolog将变量附加到列表中

Cyb*_*hot 1 list append prolog

我想在列表中附加一个变量N,它绑定到一个数字.

N = 1.

append([N], [2,3,4], Z).

Z = [N,2,3,4]. //Wrong output!
Run Code Online (Sandbox Code Playgroud)

我想得到 Z = [1,2,3,4]

如何追加变量的数字部分,而不是实际变量本身?

Dan*_*ons 6

我担心Prolog没有你习惯的变量赋值,只是变量绑定.所以"陈述"

N = 1.
append([N], [2,3,4], Z).
Run Code Online (Sandbox Code Playgroud)

实际上构成了两个完全无关的查询.幸运的是,通过组合您的查询可以实现您想要的效果:

N = 1, append([N], [2,3,4], Z).
Run Code Online (Sandbox Code Playgroud)

如果您确实需要全局变量,则可以始终使用事实或asserta/1动态定义事实.

另请注意:将来,您可能希望确保使用is而不是=在处理数字时使用.