carとcdr

car

関数 car はリストの中の最初のS式を返す。

gosh> (car '(a b c))
a
gosh> (car '((a b c) x y z))
(a b c)

アトムや空リストに適用するとエラーになる。

gosh> (car 'atom)
*** ERROR: pair required, but got atom
Stack Trace:
_______________________________________
gosh> (car '())
*** ERROR: pair required, but got ()
Stack Trace:
_______________________________________

Car の掟
関数 car は空でないリストに対してのみ定義される。

cdr

関数 cdr (クダーと読む)はリストの中から最初のS式を取り除いた、残りのリストを返す。

gosh> (cdr '(a b c))
(b c)
gosh> (cdr '((a b c) x y z))
(x y z)
gosh> (cdr '(hamburger))
()

S式がひとつしかないリストの場合には、空リストが返ってくるんだな。

アトムや空リストに適用すると、エラーになる。

gosh> (cdr 'atom)
*** ERROR: pair required, but got atom
Stack Trace:
_______________________________________
gosh> (cdr '())
*** ERROR: pair required, but got ()
Stack Trace:
_______________________________________

Cdr の掟
関数 cdr は空でないリストについてのみ定義される。
空でないリストの cdr は常に別のリストになる。

カテゴリー: Scheme パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください