length(3scm) Scheme Programmer's Manual length(3scm)

length - length of a list

(import (rnrs))                     ;R6RS
(import (rnrs base))                ;R6RS
(import (scheme r5rs))              ;R7RS
(import (scheme base))              ;R7RS

(length list)

Returns the length of list.

Implementations commonly use something like Floyd's cycle-finding algorithm to verify that the argument is truly a proper list.

Returns a single exact integer which is the number of pairs that make up the list.

(length '(a b c))          => 3
(length '(a (b) (c d e)))  => 3
(length '())               => 0

The length procedure often appears in code that deals with an arbitrary number of objects stored in a list, and where the length of the list is needed during serialization. It also tends to appear in code that destructures lists, but in such cases it may be better to use a pattern matching library such as (chibi match).

R6RS requires implementations to verify that the argument is a proper list. R7RS does not require this and as a consequence implementations may misbehave if the argument is not a proper list, or go into a non-terminating loop if the argument is a cyclical list.

This procedure can raise exceptions with the following condition types:
&assertion (R6RS)
The wrong number of arguments was passed or an argument was outside its domain.
R7RS
The assertions described above are errors. Implementations may signal an error, extend the procedure's domain of definition to include such arguments, or fail catastrophically.

cons(3scm), make-list(3scm), list-ref(3scm), vector-length(3scm).

R4RS, IEEE Scheme, R5RS, R6RS, R7RS

This page is part of the scheme-manpages project. It includes materials from the RnRS documents. More information can be found at https://weinholt.se/scheme/manpages/.

2020-12-31