[ Comparing and Sorting | Reference Manual | Alphabetic Index ]

# msort(+List1, -List2)

Succeeds if List2 has the same elements as List1 and is sorted.

List1
  List.
List2
  List or variable.

## Description

List1 is sorted according to standard term ordering, (without removing duplicates in the sense of ==/2) and unified with List2.

The sort is done according to the standard ordering of terms. Duplicates are not removed. See compare/3 for this standard ordering. Note in particular that numbers are first ordered by their type (integer, float, etc) and only then by their magnitude, i.e. sorting numbers of different types may not give the expected result.

Note msort(L1,L2) is equivalent to sort(0,=<,L1,L2). msort(L1,L2) differs from sort(L1,L2) in that it keeps duplicates.

### Modes and Determinism

- msort(+, -) is det

### Exceptions

(4) instantiation fault
  List1 is a partial list.
(5) type error
  List1 is not a list.

## Examples

    Success:
          msort([3,2,1,2,3],[1,2,2,3,3]).
          msort([2,4,6],L).         (gives L=[2,4,6]).
          msort([2,4,6,1,7,3],L).   (gives L=[1,2,3,4,6,7]).

    Fail:
          msort([1,5,3,7],[1,3,7,5]).

    Error:
          msort(List1,List2).         (Error 4).
          msort("[1]",L).             (Error 5).

## See Also

compare / 3, sort / 2, sort / 4, number_sort / 2