【发布时间】:2016-11-20 14:58:01
【问题描述】:
我做了一个计算列表长度的函数。下面是我的代码。
listLength(LIST) :- solve(LIST, LENGTH), write(LENGTH).
solve([], _).
solve([_|T], LENGTH) :- ADD is LENGTH + 1, solve(T, ADD).
当我使用输入运行此代码时
?- listLength([1, 2, 3, 4, 5, 6, 7]).
然后,解释器向我显示错误消息solve/2 : Arguments are not sufficiently instantiated.
当我像下面这样修改上面的代码时。
listLength(LIST) :- LENGTH is 0, solve(LIST, LENGTH), write(LENGTH).
solve([], _).
solve([_|T], LENGTH) :- ADD is LENGTH + 1, solve(T, ADD).
当我使用相同的输入运行此代码时,总是会写入 0。
我想计算LENGTH,我想使用listLength函数中的变量。
我怎么了? (请注意我使用的是 swi-prolog。)
【问题讨论】:
标签: prolog instantiation-error