アプリケーションの作成を通じて自分の方法を混乱させることができるのに十分なCommon LISPを学びました。 SeibelのPractical Common LISPを読みました
Common LispのイディオムであるTaoを理解するために、どのライブラリーまたはプログラムを読むべきですか?
CL-PPCRE は、適切な理由で、良い例としてよく引用されます。実際、おそらくEdi Weitzのライブラリはどれも読みやすくなりますが、CL-PPCREは特に賢く、便利で印象的なライブラリです。それを超えて、多くのCL実装は主にCLで書かれています。通常CLに実装されているCLの一部を選択し、さまざまな実装がそれをどのように処理するかを比較することは、かなり生産的です。特に、大規模で有用なマクロシステムの最良の例のいくつかは、標準の実装です。ループは興味深い読み物です。あるいは、もしあなたが本当に野心家なら、CLOSのいくつかの実装を比較することができます。
あなたが特に興味を持っているコンピューティングの領域がある場合、それを言及する価値があるかもしれませんので、人々はそれに推奨を調整できます。
それは別の本なので、あなたが探しているものとは正確には違うかもしれませんが、Peter Norvigの人工知能プログラミングのパラダイムよく書かれた、小さめのCommon LISPプログラムがたくさん含まれています。 Practical Common LISPのコードのように、プログラミング方法を教えることに焦点を当てているため、特に最初のいくつかの章では、完全に自然なコードではありませんCL、しかしそれはまだ読む価値があります。また、Common LISPの上に他の言語を構築する方法の優れた例もいくつか含まれており、CLプログラムのパフォーマンスを向上させる方法に関する貴重なアドバイスも含まれています。
他の推奨事項(PAIPおよびCL-PPCRE)は優れています。 Alexandria のコードを理解し、 GBBopen も確認することをお勧めします。
Art of the Metaobject Protocol-これまでで最も美しいコードが書かれた本です。
LISP(LISP In Small Pieces)はきちんとした本です。クロゼット(小さなobectシステム)といくつかのコンパイラーのものを示しています。間違いなく、norvigの本は素晴らしいです。
私は本当に「問題解決システムを構築する」ことも好きですが、コードは少しラフです。パラメータリストで動的スコープの変数をバインドすることに慣れていません。しかし、差別ネットを「プリコンパイル」しようとする多くの楽しい改善をもたらしました。この本は、Norvigのコードのいくつかに別のアプローチを提供します。私は今でもNorvigsのコードは「もっときれいでわかりやすい」コードだと思っています(読みやすく、理解しやすく、まだクリエイティブです)。
「Building problem solvers」には、「アスピレン(sp)が必要になる」などの警告ラベルが付属しているはずです。rmsとsussmanの依存関係指向のバックトラックをようやく「理解した」とき、稲妻が頭を打ったような気がしました。 pdisのコンパイルも素晴らしかったです。素晴らしいことです。すべて覚えておきたいのですが...
私はSBCLコードが好きです。
私が提供する唯一のものはプログラムすることです。それが私がしたことです。
私は二つのことをしました。私がよく知っている問題であるユニットテストフレームワークに取り組み、テストスイートを含めるように拡張しました。マクロの記述を理解するため。
次に行ったのは、CLで基本的なオブジェクトをいじってみました。マクロ、クロージャー、スタイル。
また、コードについてLispersからフィードバックを取得することを忘れないでください。