11.3.107 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, 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]) 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, 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, length/2 simply fails.

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

append/3, ref-lte-acl, library(lists).


Send feedback on this subject.