SICP や The 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 を書いてみたり。
いまいち。ちょっと変更。
それでもいまいち。きっともっとちゃんと抽象化されたものがどこかにあるはず。。
0 件のコメント:
コメントを投稿