ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Eval and Trampolining
    scala/cats2 2023. 7. 29. 11:43

    scala with cats 에 나오는 Eval.defer 를 이용한 factorial 구현 

    def factorial(n: BigInt): Eval[BigInt] =
      if(n == 1) {
        Eval.now(n)
      } else {
        Eval.defer(factorial(n - 1).map(_ * n))
      }
    
    factorial(50000).value

     

     

    내가 생각해본 Eval.defer 를 사용하지 않고 factorial 구현 

      def factorial(n: BigInt): Eval[BigInt] = {
        if (n == 1) Eval.now(n)
        else {
          for {
            x <- Eval.now(n)
            y <- factorial(n-1)
          } yield x * y
        }
      }

    'scala > cats2' 카테고리의 다른 글

    Future Traverse  (0) 2023.02.13
    Ior  (1) 2023.01.29
    Cats2 Exercise  (0) 2023.01.22
    Validated  (0) 2023.01.19
    Writer  (0) 2023.01.19

    댓글

Designed by Tistory.