我正在尝试在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 :(未加载)未引用”]
我真的不知道该怎么做。
答案 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; =。