[ library(lists_of_structures) | Reference Manual | Alphabetic Index ]
separate_by_key(+Key, +Value, +All, -Matches, -Others)
Partition the elements of a list according to a key value
- Key
- Key argument position (non-negative integer, or list of those)
- Value
- A term
- All
- List of structures
- Matches
- Variable, or list of structures
- Others
- Variable, or list of structures
Description
The list All is separated into two lists Matches and Others, such that
Matches contains the elements whose Key argument is identical (in the
sense of ==/2) to Value, and Others is a list with those matching elements
deleted. The original list does not have to be ordered. The element
order in the result lists corresponds to the order in the original list.
Modes and Determinism
- separate_by_key(+, +, +, -, -) is det
Exceptions
- (4) instantiation fault
- Arguments are insufficiently instantiated
- (5) type error
- Some argument or its components are of the wrong type
- (6) out of range
- Some structure does not have a Key'th argument
Examples
?- separate_by_key(1, b, [f(a,1),f(b,2),f(c,3),f(b,4)], Bs, Ns).
Bs = [f(b,2), f(b,4)]
Ns = [f(a,1), f(c,3)]
Yes (0.00s cpu)
See Also
same_key_prefix / 5, group_by_key / 3