检查列表是否已排序

Nic*_*rin 2 list prolog

我正在尝试比较 a 的元素listinteger查看它们是否已排序(或未排序)。我在用着Amzi!

我尝试了几次,但没有任何效果......:(

ordered([X]).
ordered([N|[N1|L]]) :- N <= N1, ordered([N1|L]).

ordered_([X]).
ordered_([Head,Head1|Tail]) :- Head <= Head1, ordered_([Head1|Tail]).
Run Code Online (Sandbox Code Playgroud)

no如果输入此列表,则两者都会返回:

ordered([1,2,3,4]).
ordered_([1,2,3,4]).
Run Code Online (Sandbox Code Playgroud)

我明白我需要将head与 进行比较head of the tail

Nic*_*rey 5

看起来它不应该比更复杂

ordered( []      ) .
ordered( [_]     ) .
ordered( [X,Y|Z] ) :- X =< Y , ordered( [Y|Z] ) .
Run Code Online (Sandbox Code Playgroud)

这里介绍了算术比较谓词:http ://www.amzi.com/manuals/amzi/pro/ref_math.htm#MathematicalComparisons

使用@=</2或按标准术语顺序compare/3检查事物的顺序:http://www.amzi.com/manuals/amzi/pro/ref_manipulated_terms.htm#StandardOrder