実用CommonLisp -第一章読了-
仕事もようやく落ち着き、勉強の時間がとれるようになったので第6章までしかやってなかった(と思う)実用CommonLispを最初から勉強し直し初めた。 LISPをまともに触るのは久々で、組み込み関数を結構忘れている(汗
でも、暇な時とか煮詰まった時にCLでフィボナッチやアッカーマン関数等を書いて気持ちを切り替える、ということを普段からやっていたのであまり苦労はしなかった。
第一章Lisp入門
nullとnil
読みなおしてみて気になったのは、null関数と値nilだったりした。 あれ、nullとnilって何違うんだっけ???と。 別途こちらの記事に書いた。
pと?
あとは関数定義の際のシンボルで?が使えるんだが、CLでは?の代わりにpを使う(組み込み関数numberpなど)。 あれ、?使えるのにp使うのなんでだっけ???
ドキュメーテーション文字列
ドキュメーテーション文字列が可愛い!
(defun last-name (name) "Select the last name from a name represented as a list." (first (rest name)))
関数定義の中にコメントではなく、文字列として関数の説明を書けるのは好きだなー。
car,cdrはfirst,restの旧名
うーん、旧名って言われるとなんか凄い違和感ある。。。 原文はどうなってるんですかね?
car,cdrの正式名称
carとcdrはそれぞれcontents of the address registerとcontents of the decrement registerを表している。
おー、そうだったっけ。 この辺はかなり忘れていた。
lambdaの由来
P19にlambdaという名前が使われるようになった由来が書いてある。 豆知識として面白い。
スペシャル変数ってグローバル変数?
何か違うんだっけ? 後で調べる。
第一章感想
僅か17ページで変数への代入、関数定義、map、条件分岐、高階関数まで終わらせる。 最初に「プログラミング入門じゃなくてLISP入門」と書いているだけあって、いわゆるプログラミング入門書とは全然違う。 高階関数の後に文字列型でてくるしw
ただ、LISP入門書としてはかなり解りやすいし易しい内容だと思われる。 ただ、演習問題の解答にまだ出てきていない関数(cond, evenp, expt等)がいきなり出てくるのはどうかと思う。 「LISP入門」という章なんだから、演習問題では今まで説明したものだけを使うべきでは???
PeterNorvigさん、この章書いてる時に最後はつかれたのかなw