6

これは単純すぎて「固定小数点再帰」とは呼べないだろうと推測しました。でも、実はそうかもしれないと最近気づきました。

固定小数点再帰を効果的に実装しましたか?

問題の関数は次のとおりです。

/* recursive kleisli fold */
var until = function(f) {
    return function(a) {
        return kleisli(f, until(f))(a);
    };
};

追加のコンテキストを次に示します。

// The error monad's bind
var bind_ = function(f, m) { return m.m === Success ? f(m.a) : m; };

var bind = function(f, m) {
    return m !== undefined && m.m !== undefined && m.a !== undefined ? bind_(f, m) : m;
};

var kleisli = function(f1, f2) { 
    return function(a) { 
        return bind(f2, f1(a)); 
    };
};

残りのコードはここにありますが、上記のスニペットだけで十分です。

4

1 に答える 1