zio
-
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..
-
ZLayer module pattern 을 이용한 dependency injectionzio/zio1 2021. 8. 18. 17:44
문제 zio module pattern 1.0 은 쓸데없이 복잡해 차라리 constructor dependency injection 을 쓰는게 낫다고 생각해 왔다. zio module pattern 2.0 이 최근에 소개되었는데, zio magic 과 함께 쓰면 어느정도 쓸만한 것 같다. 코드 import zio.clock.Clock import zio.console.Console import zio.magic._ import zio.{ App, ExitCode, Has, Ref, UIO, URIO, URLayer, ZIO, ZLayer } object ZLayerTest extends App { trait Logging { def log(line: String): UIO[Unit] } object Lo..
-
피보나치(fibonacci) 수열을 Scala Stream, ZStream 으로 각각 구현zio/zio1 2021. 8. 3. 00:47
문제 피보나치(fibonacci) 수열 앞 10개를 출력하는 프로그램을 아래 2가지 방법으로 각각 구현하라 scala stream 을 이용해 구현 ZStream 을 이용해 구현 코드 scala stream 을 이용한 구현 object ScalaStreamFibo { def main(args: Array[String]): Unit = { def fibonacci(h: Long, n: Long): Stream[Long] = h #:: fibonacci(n, h + n) fibonacci(0, 1).take(10).foreach(println) } } ZStream 을 이용한 구현 import zio._ import zio.stream.ZStream object ZStreamFibo extends App { ..