Next: mpg-ref-less_than, Previous: mpg-ref-leash, Up: mpg-bpr [Contents][Index]
length/2
length(?List, ?Integer)
Integer is the length of List. If List is instantiated to a proper list of term, or Integer to an integer, then the predicate is determinate.
list of term
integer, non-negative
If List is a list of indefinite length (that is, either a variable
or of the form […|X]
, where X
is a variable) and if Integer is bound to an integer,
then List is made to be a list of length Integer with unique
variables used to “pad” the list. If List cannot be
made into a list of length Integer, then the call fails.
| ?- List = [a,b|X], length(List, 4). List = [a,b,_A,_B], X = [_A,_B] ; | ?-
If List is bound, and is not a list, then length/2
simply fails.
If List is a cyclic list, and Integer is bound to a
non-negative integer, then length/2
simply fails.
If List is a cyclic list, and Integer is a variable, then the behavior is unspecified and may change in the some future version.
If Integer is unbound, then it is unified with all possible lengths for the list List.
type_error
Integer is not an integer
domain_error
Integer < 0
| ?- length([1,2], 2). yes | ?- length([1,2], 0). no | ?- length([1,2], X). X = 2 ; no
ref-lte-acl,
library(lists)
.