実践CommonLisp

lispに興味があるといいながら、基本的な書き方もよくわかってなかったので、少し時間をかけて読んだこの本。
ようやく一通りの文法を理解して、簡単なコレクションの操作やファイル入出力の基本や、lispでの評価方法や、マクロがなぜあれほどクローズアップされるのかなどが分かった。
特に印象が変わったのはシンボルで、最初シンボルといえばキーワードシンボルをおぼろげにイメージしていたけれど、もっと広範に渡ってlispの概念を支配しているという印象だった。
シンボル中心に構築されているといっても過言じゃない感じ。
マクロも実践例題を見て「シンタックスを作り出す」が何を意味しているか、ようやく理解の一端を得た。
ただ、この「シンタックスを作る」という視座って今まで持っていなかったから、そもそも発想の外で、すぐにどういう場面に適用できるのか、ぱっとは浮かばないというのが正直なところ。
クラスコンストラクタで、パラメタを名前が一致するフィールドにセット…くらいのレベルはまだわかるのだけど。


実践編はざっと読んだ。(MP3のタグとか、興味が持続せず…)
読んでいると、マクロに渡すにあたって引数の形を整形するヘルパー関数をけっこう書いているなあという印象を持った。(a->bという名前の)
これはlispのマクロプログラミングに限った話ではないけれど。


あと、この本の特徴らしいけど、確かにこれを読む限りは「関数型言語」の影すらないなあと思った。
またloopが、その仕組みとして面白いなとも思った。繰り返しでよく使うやつは網羅されてるっぽい。



さて。ひとまず「基本」が頭に入ったけれど、こっからどうしようかなあと。
途中で読書を中断してしまっている「ANSI Common Lisp」「On Lisp」を引っ張り出してきて、対比しながら読むか。
もしくは、関数型言語にまた興味が戻ってきてるから、ここでもう一度Haskellのこと勉強してみようか…
Lispに関しては、まだ「これを使ってプログラミング」ってイメージがわかないというのが正直なところ。


余談。
JavaScriptの本を読み込んでいるときもそうだけど、シンタックスとか文法とかは「へー」と面白く読んでいるのに、いざブラウザが絡んだり実際の処理がからむと急に集中がとぎれるのは、自分の傾向としてある。
あまりいい傾向ではないなあと思っているのだけれど。


実践Common Lisp

実践Common Lisp