[ library(lists) | The ECLiPSe Libraries | Reference Manual | Alphabetic Index ]

# length(?List, ?N)

Succeeds if the length of list List is N.

?List
  List or variable.
?N
  Integer or variable.

## Description

Unifies N with the length of list List. length/2 can be used to create a list List of length N. The definition of this Prolog library predicate is:

    length(List, Length) :-
            ( var(Length) ->
              length(List, 0, Length)
            ;
              Length >= 0,
              length1(List, Length) ).

    length([], Length, Length).
    length([_|L], N, Length) :-
            N1 is N+1,
            length(L, N1, Length).

    length1([], 0) :- !.
    length1([_|L], Length) :-
            N1 is Length-1,
            length1(L, N1).

This predicate does not perform any type testing functions.

### Modes and Determinism

- length(+, +) is semidet
- length(+, -) is det
- length(-, +) is det
- length(-, -) is multi

### Fail Conditions

Fails if the length of list List does not unify with N.

### Resatisfiable

Yes.

## Examples

    Success:
      length([1,2,3],N).   (gives N=3).
      length([1,2,1,X],N). (gives X=_g84; N=4).
      length(L,2).         (gives L=[_g62,_g72]). % creates list
    Fail:
      length([1,2,3],2).

## See Also

append / 3