zio prelude
-
Functional Effect 의 다양한 합성(composition)zio/zio-prelude 2021. 10. 10. 22:49
문제 아래와 같이 A, B, C, D 를 정의할 때, 다양하게 합성해 보자. def A: Option[String] = { println("A") Some("A") } def B: Option[Int] = { println("B") Some(1) } def C: Option[String] = { println("C") None } def D: Option[Int] = { println("D") None } 코드 Monad 합성 val monad: Option[(String, String)] = for { c "C is empty") def aValid: Validation[String, String] = Validation.fromOption(A).mapError(_ => "A is empty") val..
-
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 { _
-
NewTypes 과 Equal 을 활용한 객체 비교zio/zio-prelude 2021. 9. 23. 23:25
문제 다음과 같이 Site, bookSite, newsSite 를 정의할 때 final case class Site(domain: String, url: String) val bookSite = Site("naver.com", "http://book.naver.com") val newsSite = Site("naver.com", "http://news.naver.com") bookSite 와 newsSite 를 domain 기준으로 비교하면 같다. url 기준으로 비교하면 다르다. domain 과 url 기준으로 각각 비교하는 method 를 아래처럼 추가할 수 있지만 final case class Site(domain: String, url: String) { def equalByDomain(other..