[ The ECLiPSe Libraries | Reference Manual | Alphabetic Index ]

# library(lists)

Predicates for list manipulation

## Predicates

append(?List1, ?List2, ?List3)
Succeeds if List3 is the result of appending List2 to List1.
checklist(+Pred, +List)
Succeeds if Pred(Elem) succeeds for every element of List.
collection_to_list(+Collection, ?List)
Convert a "collection" into a list
delete(?Element, ?List1, ?List2)
Succeeds if List2 is List1 less an occurence of Element in List1.
flatten(+NestedList, ?FlatList)
Succeeds if FlatList is the list of all elements in NestedList, as found in a left-to-right, depth-first traversal of NestedList.
flatten(++MaxDepth, +NestedList, ?FlatList)
Depth-limited list flattening
halve(+List, ?Front, ?Back)
Split a list in the middle
intersection(+List1, +List2, ?Common)
Succeeds if Common unifies with the list which contains the common elements of List1 and List2.
length(?List, ?N)
Succeeds if the length of list List is N.
maplist(+Pred, ?OldList, ?NewList)
Succeeds if Pred(Old, New) succeeds for corresponding pairs of elements from OldList and NewList.
member(?Term, ?List)
Succeeds if Term unifies with a member of the list List.
memberchk(+Term, ?List)
Succeeds if Term is a member of the list List.
nonmember(+Element, +List)
Succeeds if Element is not an element of the list List.
print_list(+List)
Print the elements of a list, one per line
reverse(+List, ?Reversed)
Succeeds if Reversed is the reversed list List.
shuffle(+List, ?ShuffledList)
Shuffle a list, ie randomize the element order
splice(?Odds, ?Evens, ?List)
Merge two lists by interleaving the elements
subset(?SubList, +List)
Succeeds if List is the list which contains all elements from SubList in the same order as in SubList.
subtract(+List1, +List2, ?Remainder)
Succeeds if Remainder is the list which contains those elements of List1 which are not in List2.
union(+List1, +List2, ?Union)
Succeeds if Union is the list which contains the union of elements in List1 and those in List2.

## Description

Library containing various simple list manipulation predicates which require no special form of lists. For ordered lists see library(ordset). A number of basic list processing predicates (is_list/1, append/3, member/2, length/2 etc) are available by default and do not require this library to be loaded.

Note that in the predicate descriptions for this library, the '+' mode in the mode specification for list-valued arguments indicates that the list argument is required to be a proper list in the sense of is_list/1, i.e. all list tails must be recursively instantiated.