2007-05-01から1ヶ月間の記事一覧

Common Lisp の情報源

自分用のメモだが何となくまとめてみた。Google で検索するとすぐ出てくるが一応。 Common Lisp の情報源(書籍) Practical Common Lisp, Apress.com (apress.com から PDF 版を入手可能。購入済みだが分厚く重たいので。) ANSI Common Lisp 日本語版 (同じく…

プロファイリング、最適化

最適化の楽しみについて。使いやすいプロファイルを取るツールがあって、時間に余裕があるとき、最適化というのは実に楽しい。これは Common Lisp を使うようになるまで分からなかった感覚だ。最適化しているときには(普通)仕様はかわらないので、純粋に技…

Allegro Composer

どうやら自分はオブジェクト指向システムとしての Common Lisp をちゃんと分かっていない、ということが分かった。Allegro Composer(http://www.franz.com/support/documentation/8.0/doc/composer.htm , 無償版では使用できず)では 動いているシステムでの …

おっさんとしての感想

まず最初に、あのような場をゼロから作り上げた関係者の皆さんに敬意を。gauche の何が羨ましいかといえばまだ何もないところに作っていけるところだと思う。コミュニティもまた若く、熱を持っている。いつか、あのような集まりが活発に何度も行われるように…

配列アラインメントのためのダイナミックプログラミング

配列アラインメントのためのダイナミックプログラミングでは、配列の文字へのアクセスが大量に発生する。Common Lisp には汎用的な関数と特定用途専用の替わりに高速な関数が用意されている。Common Lisp の string クラスに対して文字列専用関数(schar, cha…

C++ STL VECTOR

あまりに素人で恥ずかしいが、 C++ の基礎をおろそかにしていたので引っ掛かった。 C++ の vector のメソッド push_back は、要素を複製して、末尾に追加する。 C++ の vector に push_back できる要素は、copy コンストラクタを持っている必要がある。複製…

CLOS インスタンスの表示を制御する

良く忘れるのでメモ。Common Lisp には、 print-object という generic function が定義されている。自分で定義したクラスのインスタンスの表示を制御したい場合は、このメソッドを書き換えれば良い。この機能をうまく使えば、結果表示のためにわざわざ prin…

CLOS 学習

Common Lisp のパッケージを細かく区切ると C++ プログラムを CLOS に変換するのがうまくいく気がしてきた。ほとんどクラス単位でパッケージにすると、パッケージ単位で use, import-from, shadow, shadowing-import-from を使うことで名前を制御できる。代…

C++ と CLOS

C++ のプログラムを、勉強として CLOS に書き換えている。C++ も CLOS も両方勉強しているから当たり前だが、これがなかなか難しい。今のところ、素朴に C++ のクラス定義をそのまま CLOS のクラスに変換しているが、以下のような違和感を感じている。 CLOS …