Easy Scalaz 5, Playing with Monoids



Comment

이번 글에서는 모노이드를 가지고 놀면서, 아래 나열된 라이브러리 및 언어적 특성을 살펴보겠습니다. 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 4 - Yoneda and Free Monad: Monoid 부분에서 발췌하면, 어떤…

Read this article

Easy Scalaz 4, Yoneda and Free Monad



Comment

Free[F, A] 를 이용하면 Functor F 를 Monad 인스턴스로 만들 수 있습니다. 그런데, Coyoneda[G, A] 를 이용하면 아무 타입 G 나 Functor 인스턴스로 만들 수 있으므로 어떤 타입이든 (심지어 방금 만든 case class 조차) 모나드 인스턴스로 만들 수 있습니다. Free 를 이용하면 사용자는 자신만의 Composable DSL 을 구성하고,…

Read this article

Easy Scalaz 3, ReaderWriterState with Kleisli



Comment

Composition (합성) 은 함수형 언어에서 중요한 테마중 하나인데요, 이번 시간에는 Kleisli 를 이용해 어떻게 함수를 타입으로 표현하고, 합성할 수 있는지 살펴보겠습니다. 그리고 나서, Reader, Writer 에 대해 알아보고, 이것들과 State 를 같이 사용하는 RWST 에 대해 알아보겠습니다. Kleisli State 가 (S) => (S, A) 를 타입클래스로 표현한 것이라면, A =>…

Read this article

About Type Class



Comment

프로그래머가 하는 행위를 극도로 단순화해서 표현하면 저수준 의 데이터를 고수준 데이터로 변환하는 일입니다. 여기서 저수준이란, Stream, Byte, JSON, String 등 현실세계의 데이터를, 고수준이라 함은 비즈니스 로직, 제약조건 등이 추가된 도메인 객체, 모델 등 데이터를 말합니다. 이로 인해 저수준을 고수준으로 변환하는건 조건이 충족되지 않은 데이터와 연산 과정에서 일어나는 시스템 오류를 처리해야하기…

Read this article

Easy Scalaz 2, Monad Transformer



Comment

지난 시간엔 State Monad 를 다루었습니다. 그러나 State 만 이용해서는 유용한 프로그램을 작성할 수 없습니다. 우리가 다루는 연산은 Option, Future 등 다양한 side-effect 가 필요하기 때문인데요, 서로 다른 Monad 를 조합할 수 있다면 좋겠지만, 아쉽게도 Functor, Applicative 와 달리 모나드는 composing 이 불가능합니다. Monad Do Not Compose 여러 모나드를 조합해서…

Read this article