Prolog不是功能错误

时间:2017-11-15 17:36:35

标签: prolog

我是一个班级的学生,我们简要地看几种编程语言,并且必须用其中一些编写小程序。我们这次正在使用Prolog。这是我第一次使用Prolog,我很困惑(我已经习惯了Java或C#)。

我完成了第一个程序,但我们要做的第二个程序"创建一个程序,其中P(X)为真,如果X是一个包含n a'然后是n b&#的列表39; s表示某个整数n"。 (P([a,a,b,b])为真,而P([a,b,b])为假。)

我的想法是:P(X)将检查并确保X是一个列表,并且X是偶数(如果它是一个奇怪的长度,它永远不会是真的)。然后它调用另一个事实检查" check_element"如果它不到列表的一半,它会检查一个,如果超过一半,它会检查b。

这是我的代码:

check_element([], len, count). %Terminate, list is empty
check_element([H|T], len, count) :- count =< len/2, H == a, 
                                        count0 is count + 1, check_element(T, len, count0);
                                        count > len/2, H == b,
                                        count0 is count + 1, check_element(T, len, count0).
p(X) :- is_list(X), length(X, len),
        mod(len/2) =:= 0, %Makes sure length is even. If odd, auto fail.
        check_element(X, len, 1).

我收到以下错误:

算术:`count&#39;不是一个功能

算术:`mod(len / 2)&#39;不是一个功能

有人可以帮我弄清楚我做错了吗?

0 个答案:

没有答案