なにげなく、Clojureでプログラミングしていたら、以下のようなコードでエラーが。
[sourcecode language=”clojure”]
(car ‘(1 2 3 4))
CompilerException java.lang.RuntimeException: Unable to resolve symbol: car in this context, compiling:(NO_SOURCE_PATH:7)
[/sourcecode]
Lisp系言語だと当たり前に思ってしまう、car,cdr がClojureにはありません。まぁ、正直car, cdrなんて一見何する関数かわからんよね。
(ちなみにcar は Contents of the Address part of Register number. の略。正式名称聞いてもさっぱりわからん。)
Clojureではcar, cdrはfirst, restになってる。なので、先程のコードは
[sourcecode language=”clojure”]
(first ‘(1 2 3 4))
1
[/sourcecode]
となる。
ちなみにlambdaもfnに変更されているが、lambdaは変える必要なかったんじゃないかな…