Package jason.stdlib

Class sort

All Implemented Interfaces:
InternalAction, Serializable

@Manual(literal=".sort(list,result)", hint="sorts a list of terms using the \"natural\" order. For different types, the order is: numbers < atoms < structures < lists", argsHint={"the list the be sorted","the resulting sorted list"}, argsType={"list","list"}, examples={".sort([C,b(4),A,4,b(1,1),\"x\",[],[c]],X): X unifies with [4,\"x\",[],[c],b(4),b(1,1),A,C]",".sort([a],[b,c],[a,b],~a(3),a(e,f),b,a(3)],X): X unifies with [[a],[a,b],[b,c],b,a(3),a(e,f),~a(3)]",".sort(b(3),a(10)[30],a(10)[5],a,a(d,e)],X): X unifies with [a,a(10)[5],a(10)[30],b(3),a(d,e)]",".sort([3,2,5],[2,3,5]): true",".sort([3,2,5],[a,b,c]): false"}, seeAlso={"jason.stdlib.concat","jason.stdlib.delete","jason.stdlib.length","jason.stdlib.member","jason.stdlib.shuffle","jason.stdlib.nth","jason.stdlib.max","jason.stdlib.min","jason.stdlib.reverse","jason.stdlib.difference","jason.stdlib.intersection","jason.stdlib.union"}) public class sort extends DefaultInternalAction

Internal action: .sort.

Description: sorts a list of terms. The "natural" order for each type of terms is used. Between different types of terms, the following order is used:
numbers < strings < lists < literals (by negation, arity, functor, terms, annotations) < variables

Parameters:

  • + unordered list (list): the list the be sorted.
  • +/- ordered list (list): the sorted list.

Examples:

  • .sort([c,a,b],X): X unifies with [a,b,c].
  • .sort([C,b(4),A,4,b(1,1),"x",[],[c],[a],[b,c],[a,b],~a(3),a(e,f),b,a(3),b(3),a(10)[30],a(10)[5],a,a(d,e)],X): X unifies with [4,"x",[],[a],[c],[a,b],[b,c],a,b,a(3),a(10)[5],a(10)[30],b(3),b(4),a(d,e),a(e,f),b(1,1),~a(3),A,C].
  • .sort([3,2,5],[2,3,5]): true.
  • .sort([3,2,5],[a,b,c]): false.
See Also: