(apply-generic op . args)

教育者, 将軍, 栄養士, 心理学者, 親はプログラムする. 軍隊, 学生, 一部の社会はプログラムされる. - 計算機プログラムの構造と解釈 序文

実用CommonLisp -第一章読了-

仕事もようやく落ち着き、勉強の時間がとれるようになったので第6章までしかやってなかった(と思う)実用CommonLispを最初から勉強し直し初めた。 LISPをまともに触るのは久々で、組み込み関数を結構忘れている(汗

でも、暇な時とか煮詰まった時にCLでフィボナッチやアッカーマン関数等を書いて気持ちを切り替える、ということを普段からやっていたのであまり苦労はしなかった。

iori/paip · GitHub

第一章Lisp入門

nullとnil

読みなおしてみて気になったのは、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