2006-09-21から1日間の記事一覧

ある要素の出現によって他の要素の扱いを変えたいループ

リストに対して操作を行うときに、その要素によって次の要素に対する処理を変えたい場合、というのが存在する。例えば、和田研フォントキットでは最終的なアウトラインデータは((angle 1 2) (bezier 2 2) (bezier 2 3)(angle 1 1))みたいな感じの…

CommonLispのドキュメントはいずこへ

CommonLispは基本的にSchemeとあまりかわらないと思う。Hygienic Macroじゃないとか、末尾再帰の最適化が言語仕様にない(CMUCLには実装してあるっぽいけど)とか、そういう点を除けば。 ただ、Web上でドキュメントがみつけられないので、ファイル入出力とか…

再帰の弱点

ここから先のコードはSchemeで。さっきは再帰いいよね!という話を書いたので、再帰よくないよね!という話も書いておきたいと思う。再帰のよくないところは、名前を付けないといけないところだと思う。例えば、階乗計算を考えると (define (fact n) (if (= …

再帰を使うと良い場合もあるよねという話

続きを書こう。forではループインデックスの更新を行う場所が構文内に用意されているので、それ以外の場所で更新を行うのはイディオムから外れることになり気持ち悪い、という話だった。これを再帰で書くとどうなるか。 void convertToSVG(point_list, index…