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]
如何追加变量的数字部分,而不是实际变量本身?
我担心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而不是=在处理数字时使用.