我正在尝试比较 a 的元素list以integer查看它们是否已排序(或未排序)。我在用着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。
看起来它不应该比更复杂
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