예제 #1
0
파일: monadIO.py 프로젝트: fumieval/Curtana
class DiscardL(IO, InfixMix()):
    op = ">>"
    def do(self):
        result = self.left.do()
        if isinstance(result, IOZeroType):
            return result
        return self.right.do()
예제 #2
0
파일: monadIO.py 프로젝트: fumieval/Curtana
class Bind(IO, InfixMix()):
    op = "&"
    def do(self):
        result = self.left.do()
        if isinstance(result, IOZeroType):
            return result
        return self.right(result).do()
예제 #3
0
파일: monadIO.py 프로젝트: fumieval/Curtana
class Or(IO, InfixMix()):
    op = "|"
    def do(self):
        result = self.left.do()
        if isinstance(result, IOZeroType):
            return self.right.do()
        return result    
예제 #4
0
파일: monadIO.py 프로젝트: fumieval/Curtana
class Apply(IO, InfixMix()):
    op = "*"
    def do(self):
        f = self.left.do()
        if isinstance(f, IOZeroType):
            return f
        x = self.right.do()
        if isinstance(x, IOZeroType):
            return x
        return f(x)
예제 #5
0
class ProcessorComposite(Processor, InfixMix()):
    op = ">>"
    __init__ = InfixMix().__init__

    def __call__(self, stream):
        return self.right(self.left(stream))