Saturday, June 13, 2009

Haskell에서 모나드(monad)란...

이리저리 책을 뒤적여보니...

순수함수형언어인 Haskell의 장점을 파괴하지 않으면서,
1. modulality를 제공해주고
2. 좀더 유연한 코드를 쉽게 작성해 주고(기존 모나드의 여러가지 기능을 이용 가능)
라는 것인듯 합니다.

함수형언어는 명령형 언어의 계산방법과 차이가 있는데(특히 지연평가), 입출력 시스템등에서는 지연평가로는 원하는 입출력을 얻을 수 없다는 단점이 있습니다.
명령형 스타일의 코드를 실행하면서 함수형언어의 장점을 지킬 수 있는 방법이 모나드라는 것이라고 합니다.

제가 이해하기로는 MASM, C에서의 모듈화에 OO에서 이야기하는 캡슐화등의 장점을 가지면서도, 함수형 언어와 완벽하게 조화되는 코드를 작성하게 해주는 방법 내지는 template같은 것...정도로 이해했습니다.

현재 Real World Haskell 탐독중입니다. 초보인 제게는 어렵네요. Category theory등에 대한 정보도 같이 습득중입니다.

No comments: