运营商是,列表

时间:2012-11-09 15:35:56

标签: prolog

我使用这个功能:

f(V):-V is [1,2,3,4,5].

但是我收到了一个错误:

ERROR: '.'/2: Type error: `[]' expected, found `[2,3,4,5]' ("x" must hold one character)

需要修复什么?

2 个答案:

答案 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将绑定(在回溯时)列出的值。