#:g1: Common Lisp Recipes を読んだ

Posted 2016-05-26 16:22:50 GMT

前にこのブログでも、

''755ページもあり、まだ自分は7章までしか読んでいないですが、Common Lispを日常的に書く人には必携の書という感じです。
全部読んだら感想でも書いてみようかなと思っています。''

などと書いていましたが、Common Lisp Recipes — A Problem-Solution Approach(以下CLR)を半年掛けてやっと読み終えました。
当初は、一日75ページのペースで読み進めていたので1月中に読了かと思っていましたが、何ヶ月か放置してしまっていました。
しかし、引っ越しをして通勤時間が激増したのでKoboに入れて通勤時間中に読むようにしたところ約2週間で読了となりました。

この本の対象読者について

この本の前書きにも書いてありますが、基本的な所は、Practical Common Lisp(実践Common Lisp)を参照することとして、その次のステップに当たる実践的なレシピ集という位置付けになっています。 マクロ等の解説も、On LispやLet Over Lambdaがあるので、そちらに任せているということで棲み分けがされているようです。

CLRは、On LispやLet Over Lambdaのように、なんだか良く分からないが凄そう、というような所は全くなく外連味もないので、ガチでCommon Lispを書いてないとあまり嬉しくない内容なのが特徴でしょうか。
しかし、ガチで書いている人には必読の内容で、実に細かく実践的に解説されているので、実践Common Lispを読了した位の人であれば、通読すればCommon Lispの書法が1ランクアップするに違いないと思います。
また、ある程度他の言語を齧ってからCommon Lispに入門する人が多いと思いますが、他の言語の経験から類推していても分からないような部分についての解説が大盛りです。Common Lispらしい方法と用意された道具を知るにもとても良い本だと思います。

また、Stack Overflowで質問されそうな基礎的な大体載っているので頭に入れておくと学習時間の節約にもなりそうです。

いまどきのライブラリの解説が少ないという指摘もあるようですが、Common Lispに備わっている機能をかなり詳しく解説していて、個人的にはCommon Lisp固有の機能を徹底的に解説しているこのような本のほうが貴重だと思いました。

CLRがCommon Lispの基本機能の解説を押えてくれた、とも考えられるので、今後さらに応用寄りの解説書が出版されることを期待したいところです。

そういば、MOP周りはこの本ではあまり解説されていませんので、その辺りも今後の方々に期待したいところです。

一応Common Lispのエキスパートも想定読者層ではないようですが、この本で取り上げられている事項すべてに通暁している人というのは多くはなさそうです。

印象に残ったところ

まず、シンボルの解説から始めているのが渋いです。
また、配列、ストリーム、コンディション周り解説はなるほどなと思うことが多かったです。

気になるところ

全編サンプルコードの書法では、関数をfunction(#')ではなく、quote(')で記述していますが、これがちょっと個人的には残念です。
また、functionを100%排除しているわけでもなく、ちょっと不思議でもあります。
書籍としての見栄えを優先したのか個人の趣味なのか。
quoteにしてしまうと、情報量が落ちるのであまり良いスタイルとも思えないですし、古えの1970年代Lispっぽいです。

例えば、 (map 'list 'list '(a b c))

と書くと型としての'listと関数としての'listが並ぶので気持ち悪かったり(この書籍でもmapの関数では、#'が使われていたりします)

まとめ

Common Lispをガチで書く人で、より知識を深めたい人は、買って損はないです。
Apressでは電子書籍はセールで価格が40%offになったりすることがままあるようなので、それを狙って購入してみるのも良いかもしれません。


HTML generated by 3bmd in LispWorks 7.0.0

comments powered by Disqus