[ library(lists_of_structures) | Reference Manual | Alphabetic Index ]
same_key_prefix(+Key, +All, -KeyVal, -Prefix, -Rest)
Get the maximum prefix of a list with identical key values
- Key
- Key argument position (non-negative integer, or list of those)
- All
- List of structures
- KeyVal
- Variable, or common key
- Prefix
- Variable, or list of structures
- Rest
- Variable, or list of structures
Description
The list All is split into two sublists Prefix and Rest, such that
Prefix contains all the leading elements of All whose Key arguments
are identical (in the sense of ==/2), and Rest contains the remainder
of the list. Concatenating the Prefix and Rest will yield the original
list All. The key value of the Prefix is returned as KeyVal.
Modes and Determinism
- same_key_prefix(+, +, -, -, -) is semidet
Fail Conditions
List All is empty
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
?- same_key_prefix(1, [f(a,1),f(a,2),f(c,3),f(b,4),f(a,5)],
KeyVal, Prefix, Rest).
KeyVal = a
Prefix = [f(a,1), f(a,2)]
Rest = [f(c,3), f(b,4), f(a,5)]
Yes (0.00s cpu)
?- same_key_prefix(1, [], KeyVal, Prefix, Rest).
No (0.00s cpu)
See Also
group_by_key / 3, group_with_key / 3, separate_by_key / 5