在prolog中编程以验证数字列表的顺序

时间:2014-11-21 23:48:43

标签: list prolog verify

我正在尝试在Prolog中创建一个程序来验证数字列表的顺序并返回YES或NO。

实施例: [1,2,3,4] 是

[1,3,4,2] 否

我在互联网上获取此代码以查看是否有效:

domains
    x = integer
    l = integer*

predicates
    ordered(l)

clauses
    ordered([X]).

    ordered([Head|[Head1|Tail]]) :-
        Head =< Head1,
        ordered([Head1|Tail]).

Output : 

Goal: ordered([1,2,3,4])
Yes

Goal: ordered([3,2,4,5])
No

但程序中的一些错误SWI-Prolog: [X之前的第二行:“语法错误:运算符预期”] [11行命令:“ordered / 1 :(未加载)未引用”]

我真的不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

您的程序使用Turbo-Prolog,PDC-Prolog或Visual Prolog的语法。在爱丁堡传统的Prologs中,包括SWI,特别是ISO-Prolog,没有关于谓词和声明的部分。相反,整个文本由子句组成,额外的声明与所谓的指令一起给出,如:- multifile(m/3).

作为一个历史性的评论,Turbo-Prolog没有发明这样的部分,它们出现在&#34; Marseille-Prolog&#34;,也被称为Prolog我已经。 (这是Prolog 0之后的第二个Prolog ...)

答案 1 :(得分:1)

正如翻译消息所说:“等于或小于”运算符是=&lt;,not&lt; =。