이 글은 책 Learn You a Haskell for Great Good 챕터 14의 Making Monads 섹션을 읽고 정리한 것이다. 보통은 모나드를 만들기 위해서 모나드를 만들기보다는 어떤 문제를 해결하기 위해서 타입을 먼저 만들고 이게 어떤 문맥이 있고 모나
타입 Ordering은 뭔가 비교한 결과를 표현할 때 쓴다. Ordering에는 값이 세 개 있다. 아래와 같이 함수 compare로 두 수를 비교하면 결과로 타입 Ordering의 값 중 하나가 나온다.
여기 리스트 모나드로 풀 수 있는 문제가 하나 있다. 체스판이 하나 있고 그 위에 나이트가 하나 있다고 하자. 특정 위치에 나이트를 세 번 움직여서 갈 수 있는지 알고 싶다. 체스보드에서 나이트의 위치를 표현하기 위해 순서쌍을 이용한다. 첫 번째 번호는 나이트가 있는
이 글은 책 Learn You a Haskell for Great Good!에서 섹션 Reader? Ugh, not this joke again.을 읽고 내용을 정리한 것이다.우선 이 책에는 농담이나 패러디가 많다. 작가가 개그 욕심이 많은 듯... 하스켈에는 이름이
이 글은 책 Learn You a Haskell for Great Good!에서 섹션 Error error on the wall을 읽고 정리한 것이다. 이 섹션의 제목 Error error on the wall는 동화 백설공주에서 왕비가 거울을 부를 때 하는 말인 "거
이 글은 책 Learn You a Haskell for Great Good!에서 섹션 A yes-no typeclass을 읽고 정리한 것이다. 자바스크립트 같은 약 타입(weakly typed) 언어에서는 if 표현식에 거의 아무거나 넣을 수 있다. 예를 들어 다음과
이 글은 책 Learn You a Haskell for Great Good!에서 섹션 Case expressions를 읽고 정리한 것이다. C, C++, Java 같은 명령형 프로그래밍 언어에도 case 문법이 있다. case 문법은 변수를 하나 받아서 그 변수의 값에

이 글은 책 Learn You a Haskell for Great Good!에서 섹션 Zippers를 읽고 정리한 것이다.하스켈의 순수함이 좋긴 한데 어떨 때는 이 순수함 때문에 문제를 해결할 때 명령형 언어에서 쓰던 방식과는 다르게 접근해야 한다. 참조 투명성(ref
이 글은 책 Learn You a Haskell for Great Good!을 읽고 정리한 것이다. 함수 foldl의 모나드 버전은 foldM이다. foldl의 타입은 아래와 같다. foldl의 인자와 결과는 순서대로 아래와 같다.(a -> b -> a) : 인자가 두