state monad
-
ZIO prelude 의 State Monadzio/zio-prelude 2021. 9. 26. 23:54
문제 Scala State Monad 의 문제를 zio-prelude 의 State Monad(ZPure) 를 사용해 구현하라. 코드 import zio.prelude.State object GolfDistance { def swing(n: Int): State[Int, Int] = State.modify(s => (s + n, s + n)) def main(args: Array[String]): Unit = { val distance: State[Int, Int] = for { _
-
Scala State Monadscala/basic 2021. 8. 3. 12:12
문제 State Monad 를 만들고, 이를 사용해 다음을 계산하라. 골프 공을 쳐서 처음에는 20m, 두번째는 10m, 세번째는 15m 를 보냈다. 그런데 시작라인에서 3m 를 더 나온 위치에 공을 두고 쳤다면 최종 골프공은 시작라인에서 어느정도 떨어져 있을까? 3 + 20 + 10 + 15 = 48 코드 case class State[S, A](run: S => (S, A)) { def flatMap[B](f: A => State[S, B]): State[S, B] = State { s0 => val (s, a) = run(s0) // 현재 상태의 run 을 적용하고 f(a).run(s) // 이후에 f 를 적용해 S => (S, A) 함수를 갱신함 } // 기존 run 과는 다른 새롭게 정의된 S ..