Next: , Previous: , Up: mpg-bpr   [Contents][Index]


11.3.111 length/2

Synopsis

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.

Arguments

List

list of term

Integer

integer, non-negative

Description

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.

Backtracking

If Integer is unbound, then it is unified with all possible lengths for the list List.

Exceptions

type_error

Integer is not an integer

domain_error

Integer < 0

Examples


| ?- length([1,2], 2).

yes
| ?- length([1,2], 0).

no
| ?- length([1,2], X).

X = 2 ;

no

See Also

ref-lte-acl, library(lists).


Send feedback on this subject.