car と cdr と cons

car も cdr も、昔の IBM の汎用機で動いていた LISP の操作命令から来ているらしい。「かー」とか「くだー」とか、講義中は不思議な音がしていました。

ていうか、これがそもそも故中西正和先生の講義でこけた原因っていうか。我ながら、こんな最初でこけていたのは恥ずかしい。

(a b c d) っていうリストがあったら;

(car '(a b c d)) は a を返す。
(cdr '(a b c d)) は (b c d) を返す。
(cons 'a '(b c d)) は (a b c d) を返す。

Gauche で実行してみる:

gosh> (car '(a b c d))
a
gosh> (cdr '(a b c d))
(b c d)
gosh> (cons 'a '(b c d))
(a b c d)

さらに caar とか cddr とか carcdr とか、だんだんわけのわからない手続きを実装していって、どんどん名前が長くなる長くなる…(いや、関数だから実は明快なんですが…わけがわかってないのは私の頭)

今見ると、おお!って思うし、すんなり頭の中に入ってくるんだけど、当時は全然頭の中には残ってなかったですね。なるほど。(ていうか、お風呂がどうとかお湯がどうとかっていう独特の「たとえ」に惑わされていた気がする)