length
¶以下の例のように、Lispの関数 length
を使うことで、リストにいくつの要素があるかを確認できます。
(length '(buttercup))
⇒ 1
(length '(daisy buttercup))
⇒ 2
(length (cons 'violet '(daisy buttercup)))
⇒ 3
3番目の例では、cons関数を用いて3つの要素からなるリストを構築し、それをlength関数の引数として渡しています。
また、length を使って空のリストに含まれる要素数を数えることもできます:
(length ())
⇒ 0
予想通り、空のリストの要素数は0です。
興味深い実験として、リストを一切指定せずに長さを求めようとした場合に何が起こるかを確かめてみることが挙げられます。つまり、引数を何も与えず、空のリストさえも指定せずに
length を呼び出そうとしてみるということです:
(length )
これを評価すると見えるのは、エラーメッセージです。
Lisp error: (wrong-number-of-arguments length 0)
これは、関数が別の数の引数を期待しているにもかかわらず、誤った数である0個の引数を受け取ったことを意味します。この場合、期待される引数は1つであり、その引数は関数が長さを計測するリストです。(なお、1つのリストは、たとえその中に多くの要素が含まれていたとしても、1つの引数となることに注意してください。)
エラーメッセージ内の「length」という部分は、関数名です。