예제 #1
0
 def optional(self) -> None:
     a = 'a'
     b = 'b'
     Right(a).to_maybe.should.just_contain(a)
     Left(a).to_maybe.should.be.a(Empty)
     Right(a).to_either(b).should.equal(Right(a))
     Left(a).to_either(b).should.equal(Left(a))
예제 #2
0
 def map(self) -> None:
     a = 'a'
     b = 'b'
     Right(a).map(_ + b).value.should.equal(a + b)
     Left(a).map(_ + b).value.should.equal(a)
예제 #3
0
 def f(z: int, a: int) -> Either[str, int]:
     return Right(z + a) if a < 5 else Left('too large')
예제 #4
0
    def fold_m(self) -> None:
        def f(z: int, a: int) -> Either[str, int]:
            return Right(z + a) if a < 5 else Left('too large')

        Lists.range(5).fold_m(Right(8))(f).should.contain(18)
        Lists.range(6).fold_m(Right(8))(f).should.be.left
예제 #5
0
 def traverse(self) -> None:
     a = 'a'
     Right(Just(a)).sequence(Maybe).should.equal(Just(Right(a)))
     Left(Just(a)).sequence(Maybe).should.equal(Just(Left(Just(a))))
     List(Right(a)).sequence(Either).should.equal(Right(List(a)))
     List(Right(a), Left(a)).sequence(Either).should.equal(Left(a))
예제 #6
0
 def ap2(self) -> None:
     a = 'a'
     b = 'b'
     Right(a).ap2(Right(b), operator.add).should.equal(Right(a + b))
예제 #7
0
파일: boolean.py 프로젝트: yuhangwang/amino
 def either_call(self, l, r):
     return Right(r()) if self else Left(l)
예제 #8
0
파일: boolean.py 프로젝트: yuhangwang/amino
 def e(self, l, r):
     return Right(call_by_name(r)) if self else Left(call_by_name(l))
예제 #9
0
 def list_flat_map(self) -> None:
     (List(Right(1), Left(2), Right(3)).join).should.equal(List(1, 3))
예제 #10
0
 def e(self, f: A, t: B) -> Either[A, B]:
     return Right(call_by_name(t)) if self else Left(call_by_name(f))
예제 #11
0
 def filter(self, fa: Either[A, B], f: Callable[[B], bool]) -> Either[Any, B]:
     return fa // (lambda a: Right(a) if f(a) else Left('filtered'))
예제 #12
0
 def with_index(self, fa: Either[A, B]) -> Either[A, Tuple[int, B]]:
     return Right(0) & fa
예제 #13
0
 def pure(self, b: B) -> Either[A, B]:
     return Right(b)