하스켈 모나드 공부중인데..
모나드는 생각보다 하스켈 전반에 깊이 박혀있는 개념이었음. 거의 하스켈의 뼈대, 근간이라는 생각이 들 정도.
극초반에 배우게 되는 list comprehension도 모나드 구문에 대한 설탕이었고, 거진 왠만한 것들은 다 사실은 펑/어펑/모나드였다 라는 결론이 나오더라. 소오름..
예제중에 이런 게 나오는데:
f x = let
a = (*2) x
b = (+10) x
in a + b
do 블록은 이 구조를 거의 그대로 쓸 수 있음:
f = do
a <- (*2)
b <- (+10)
return $ a + b
이건 설탕이라 원래 모나드 바인딩 정의대로 쓰면 이럼:
f = (*2) >>= (λa -> (+10) >>= (λb -> return $ a + b))
하지만 어펑 스타일로 쓰면 좀더 간결하게 쓸 수 있다:
f = (+) <$> (*2) <*> (+10)
그리고 이렇게도 쓸 수는 있음:
f = (*2) >>= (`fmap` (+10)) . (+)
f = (`fmap` (+10)) . (+) =<< (*2)
ㅎㅎ 마지막 것은 정말 이해하기 힘들다.
모두들 신박한 하스켈 배워서 수학의 기쁨을 느껴보자.
람다 후 아크바르!
혹자는 그래서 do 설탕을 컴퓨터 과학 역사 최고의 설탕이라고 하더라
하스켈 . ㅋㅋㅋ 다운받는데 7 분 열어서 예제 복붙 해서 돌려보는데 3 분 언인스톨 20 초 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 조콰 안해 ㅋㅋㅋㅋㅋㅋㅋㅋ 씨발 모나드 개색히 진짜 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
하스켈을 10분 20초만에 판단하다니 너무 슬픈 일이군..