ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • State
    scala/cats2 2023. 1. 10. 09:49

    문제

    https://wefree.tistory.com/44 의 문제를 cats State Monad 를 이용해 구현해 본다.

     

    코드

    import cats._
    import cats.data._
    import cats.syntax.all._
    
    object GolfState {
      def swing(n: Int): State[Int, Int] = State(s => (s+n, s+n))
    
      def main(args: Array[String]): Unit = {
        val states: Seq[State[Int, Int]] = List(swing(20), swing(10), swing(15))
        val finalState: State[Int, Int] = states.reduce(_ *> _)
        val (s,a) = finalState.run(3).value
        println(a)
      }
    }

     

    설명

    state monad composition 을 위해, 특히 마지막 state 만 관심이 있기 때문에 아래와 같이 작성한 것에 주목한다.

    val finalState: State[Int, Int] = states.reduce(_ *> _)

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

    Cats2 Exercise  (0) 2023.01.22
    Validated  (0) 2023.01.19
    Writer  (0) 2023.01.19
    OptionT  (0) 2023.01.16
    Nested  (0) 2023.01.16

    댓글

Designed by Tistory.