2010/10/14

ちょっと考えてみたけど、やっぱボツだった accum

これを読んで、以前再帰とか S 式に慣れるために何度も書いたことを思い出しました。
SICPThe Little Schemer にも登場しますね。

とりあえず、Scheme で改めて書いてみました。

Common Lisp だと、こうでしょうか。

或いはこう?(仕様を満たせていませんね・・・)


書いているうちに、こういうのがあったら良いんじゃないかなぁ、と思いました。
(hoge pred calc acc dec i) ==
(if (pred i)
    acc
    (hoge pred calc (calc i acc) dec (dec i)))

パッと見 unfold に似てるので、unfold で無理やり書いてみました。

やはり unfold では強引な気がしたので試しに accum というのを定義してみました。

試しに fizzbuzz を書いてみたり。

いまいち。ちょっと変更。

それでもいまいち。きっともっとちゃんと抽象化されたものがどこかにあるはず。。

追記

調べたら、ちょっと前に unfold で書いてた。今日書いたものより、こっちの方が良い・・・。


Scheme手習い

0 件のコメント:

コメントを投稿