2011年7月4日

実践Common Lisp再読中

快楽主義でいくとすると実践Common Lisp読むのが一番自然かなと思って再読中。
他にも未読の本が多数あるのだけどこの本を読み返すのが一番かなと思って読んでます。
改めて読み返してみるとさすがCommon Lispの本だけあって序盤でマクロです。
一回目読んだときは意味も分からずただ読み進めただけだったからさ。

しかしマクロ全然わからない。
自分でマクロ作るなんて全然うまくいかないのだけど、とりあえず標準で用意されているマクロを自分なりに実装してみることにしました。
「cond」なんかどうやってやってるか全然わからない。
大体「and」の時点でお手上げ状態。
とりあえずできたような気がするのが「when」「unless」だからね。
難しいね。

9章まで読み返したのだけどやっぱり肝はマクロだな。
マクロは魅力的過ぎる。
四苦八苦してやっと理解できたこととしては、マクロは評価されるタイミングが違うから、引数のS式が評価されないって点に気づくまでえらい時間がかかってしまいました。
だからマクロの呼び出しは「'」しないのだと。
何回読んでも「definition for mac, read only」意味不明だったけどマクロ呼び出しの時は引数のS式が評価されないってわかってからは、この小話の意味がちょっとだけ分かったような気がする。

しかし、「'」や「`」や「,」や「,@」ってスゴイこと考え付いたよね。
でもこれらを自由に使いこなせるようになったらマクロ無い言語は不自由に感じるんだろうな。