我使用这个功能:
f(V):-V is [1,2,3,4,5].
但是我收到了一个错误:
ERROR: '.'/2: Type error: `[]' expected, found `[2,3,4,5]' ("x" must hold one character)
需要修复什么?
答案 0 :(得分:5)
is/2
中缀运算符用于计算算术表达式。
似乎您想要将变量V与不是算术表达式的术语(在本例中为列表)统一,因此您应该使用等于运算符(=
)。
f(V):- V = [1,2,3,4,5].
或者直接在程序的头部统一:
f([1,2,3,4,5]).
答案 1 :(得分:0)
我认为你的代码表明f / 1需要在一小组数字中进行枚举。如果这是真的,你应该改为写
f(V) :- member(V, [1,2,3,4,5]).
然后当调用f(X)
时,X将绑定(在回溯时)列出的值。