这是我在 prolog 中的第一个程序,我一直在阅读它,但似乎并没有掌握几个核心概念(我认为)。我正在尝试编写一个函子,它将采用两个列表并仅在第一个列表具有更多元素时才返回 true。我有一些简单的程序可以工作,但我在这里遇到了障碍。我试图在 isLonger 内部调用 size 并将临时变量设置为返回大小。这似乎是在序言中处理此问题的一种糟糕(且不正确)的方式。我得到一个:
ERROR: >/2: Arguments are not sufficiently instantiated
% List 1
a([cat, dog, horse]).
b([1, 2, 3, 4]).
c([x, [a, b], y, z]).
c([red, yellow, green, blue]).
% isLonger function
isLonger([],[]).
isLonger(L1,L2) :- A = size(L1,N), B = size(L2,N), A > B.
% size([],N).
size([_|T],N) :- size(T,N1), N is N1+1.
输入:
isLonger([x,y,z], [7,8,9,10]).