我做了一个计算列表长度的函数。下面是我的代码。
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。)