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 とか、だんだんわけのわからない手続きを実装していって、どんどん名前が長くなる長くなる…(いや、関数だから実は明快なんですが…わけがわかってないのは私の頭)
今見ると、おお!って思うし、すんなり頭の中に入ってくるんだけど、当時は全然頭の中には残ってなかったですね。なるほど。(ていうか、お風呂がどうとかお湯がどうとかっていう独特の「たとえ」に惑わされていた気がする)