3

我使用这个功能:

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

但我收到一个错误:

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

需要修复什么?

4

2 回答 2

5

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

您似乎想将变量 V 与一个不是算术表达式的项(在本例中为列表)统一,因此您应该使用等号运算符 ( =)。

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

或者直接在程序的头部统一:

f([1,2,3,4,5]).
于 2012-11-09T16:22:46.363 回答
0

我认为您的代码表明 f/1 需要在一小组数字中枚举。如果这是真的,你应该改写

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

然后在调用f(X)X 时将绑定(回溯)列出的值。

于 2012-11-09T16:36:58.000 回答