예제 #1
0
파일: monad.py 프로젝트: reem/python-monad
def sequence(monad_t, monad_list):
    """Evaluates each action in sequence from left to right and
    collects the results."""

    def helper(monad, acc):
        "Helper for sequence."
        return monad >= (lambda x: (acc >= (lambda xs: (monad_t.return_m(xs + [x])))))

    return func.foldr(helper, monad_t.return_m([]), list(reversed(monad_list)))
예제 #2
0
def sequence(monad_t, monad_list):
    """Evaluates each action in sequence from left to right and
    collects the results."""
    def helper(monad, acc):
        "Helper for sequence."
        return monad >= (lambda x: (acc >= (lambda xs:
                                            (monad_t.return_m(xs + [x])))))

    return func.foldr(helper, monad_t.return_m([]), list(reversed(monad_list)))
예제 #3
0
파일: monad.py 프로젝트: reem/python-monad
def sequence_(monad_t, monad_list):
    """Evaluates each action in sequence from
    left to right and dumps the results."""
    return func.foldr(monad_t.then, monad_t.return_m(func.Unit()), monad_list)
예제 #4
0
파일: monad.py 프로젝트: reem/python-monad
def msum(monad_t, monad_list):
    "Generalized concatenation."
    return func.foldr(monad_t.mplus(), monad_t.mzero(), monad_list)
예제 #5
0
def sequence_(monad_t, monad_list):
    """Evaluates each action in sequence from
    left to right and dumps the results."""
    return func.foldr(monad_t.then, monad_t.return_m(func.Unit()), monad_list)
예제 #6
0
def msum(monad_t, monad_list):
    "Generalized concatenation."
    return func.foldr(monad_t.mplus(), monad_t.mzero(), monad_list)