Easy Scalaz 6 – Playing With Monoids

이 글은 Scala Type Level Programming 시리즈물인 Easy Scalaz 의 6 번째 글입니다. Playing with Monoids 이번 글에서는 모노이드를 가지고 놀면서, 아래 나열된 라이브러리 및 언어적 특성을 살펴보겠습니다. Boolean Monoid operations with Spire Algebraic Data Types using Value Class, Scalaz.Tag Creating Monoid for all subclasses using Shapeless Context Bound Path Dependent Type Monoid Easy Scalaz … Continue reading Easy Scalaz 6 – Playing With Monoids

Easy Scalaz 5 – (Co) Yoneda, Free Monad, and Trampoline

이 글은 Scala Type Level Programming 시리즈물인 Easy Scalaz 의 1 번째 글입니다. Yoneda, Coyoneda, Free and Trampoline Free[F, A] 를 이용하면 Functor F 를 Monad 인스턴스로 만들 수 있습니다. 그런데, Coyoneda[G, A] 를 이용하면 아무 타입 G 나 Functor 인스턴스로 만들 수 있으므로 어떤 타입이든 (심지어 방금 만든 case class 조차) 모나드 인스턴스로 만들 … Continue reading Easy Scalaz 5 – (Co) Yoneda, Free Monad, and Trampoline

Easy Scalaz 4 – ReaderWriterState with Kleisli

이 글은 Scala Type Level Programming 시리즈물인 Easy Scalaz 의 4 번째 글입니다. ReaderWriterState with Kleisli Composition (합성) 은 함수형 언어에서 중요한 테마중 하나인데요, 이번 시간에는 Kleisli 를 이용해 어떻게 함수를 타입으로 표현하고, 합성할 수 있는지 살펴보겠습니다. 그리고 나서, Reader, Writer 에 대해 알아보고, 이것들과 State 를 같이 사용하는 RWST 에 대해 알아보겠습니다. Kleisli State … Continue reading Easy Scalaz 4 – ReaderWriterState with Kleisli

Easy Scalaz 3 – Monad Transformer

이 글은 Scala Type Level Programming 시리즈물인 Easy Scalaz 의 3 번째 글입니다. Monad Transformer 지난 시간엔 State Monad 를 다루었습니다. 그러나 State 만 이용해서는 유용한 프로그램을 작성할 수 없습니다. 우리가 다루는 연산은 Option, Future 등 다양한 side-effect 가 필요하기 때문인데요, 서로 다른 Monad 를 조합할 수 있다면 좋겠지만, 아쉽게도 Functor, Applicative 와 달리 모나드는 … Continue reading Easy Scalaz 3 – Monad Transformer

Easy Scalaz 2 – State Monad

이 글은 Scala Type Level Programming 시리즈물인 Easy Scalaz 의 2 번째 글입니다. State Monad State 를 설명하는 수많은 문구들이 있지만, 타입만큼 간단한건 없습니다. State[S, A] :: S => (S, A) A state transition, representing a function 즉 S 를 받아 (S, A) 를 돌려주는 함수를, 타입클래스 State[S, A] 로 표현합니다. 더 엄밀히는, (scalaz 구현에서는) … Continue reading Easy Scalaz 2 – State Monad