2012-11-09 88 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]). 

然後。