2012-11-09 54 views
2

我用这个函数:运营商,该列表

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

取决于。你期望代码做什么? –

回答

4

is/2中缀运算符用于评估算术表达式。

看来你希望统一变量V与非算术表达式(在这种情况下是一个列表),所以你应该使用相等的运算符(=)。

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

或可替换地在程序的头部直接统一:

f([1,2,3,4,5]). 
0

我觉得你的代码表明,F/1间小组数字列举的需要。如果这是真的,你应该在调用f(X) X时,会结合(在回溯)中列出的值写入,而不是

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

然后。