하스켈 입문서

Learn You a Haskell for Great Good!

보통 줄여서 LYHGG라고 부르는 Learn You a Haskell for Great Good!는 가장 쉬운 하스켈 입문서입니다. 원서는 무료로 공개되어 있어 온라인으로 읽으실 수 있고, 국내에는가장 쉬운 하스켈 책 느긋하지만 우아하고 세련된 함수형 언어이란 제목으로 번역 출간되었습니다.

책 전반부에서는 하스켈 타입, 함수, 문법, 재귀, 고차 함수, 모듈 등 하스켈 언어의 기본적인 내용을 쉽고 간결하게 설명하고 있고, 후반부에는 타입클래스, 입출력, Functor, Applicative Functor, Monoid, Monad 등 고급 주제들을 다루고 있습니다.

참고로 쉬운 입문서라고는 하지만 책 후반부의 난이도가 전반부에 비해 상대적으로 높아서 독학하시는 분들이 대개 Functor나 Monad에 막혀서 그만 두는 경우가 많습니다.

Real World Haskell

LYHGG가 주로 하스켈 언어의 특징에 대해 소개한 책이라면, Real World Haskell은 하스켈을 실제 업무에 사용할 수 있도록 다양한 예제를 통해 하스켈의 특징을 설명하고 있습니다. 저자인 Bryan O’Sullivan과 Don Stewart는 각각 페이스북과 스탠다드 차타드 은행에서 하스켈 팀을 이끌고 실제로 하스켈로 개발 업무를 수행하고 있습니다.

덕분에 이 책에는 JSON 처리, 파서 작성, 시스템 프로그래밍, 데이터베이스, GUI, 네트워크 프로그래밍 등의 하스켈을 실제 업무에 사용하기 위해 필요한 구체적인 지식들이 포함되어 있습니다.

한 가지 아쉬운 점은 2007년 이 책이 출간된 이후 하스켈 라이브러리에도 여러 변경 사항이 생기면서 일부 챕터의 코드는 더 이상 제대로 동작하지 않는다는 점입니다. 특히, 챕터 19 “Error handling”의 경우 하스켈의 예외 처리 라이브러리가 완전히 개정되면서 더 이상 유효하지 않게 되었습니다.

원서는 온라인에서 무료로 읽으실 수 있고, 아쉽게도 국내에 번역 출간된 적은 없습니다.

Haskell Book

Haskell Book은 요즘 하스켈 커뮤니티에서 가장 핫한 책입니다. 이 책은 Christopher Allen과 Julie Moronuki이 공동 집필하였는데, 특이한 점은 Julie Moronuki은 이 책을 쓰기 전까지 개발자가 아니었다는 사실입니다. 대학에서 철학을 전공하고 교사 및 사서로 일하던 Julie는 Christopher의 설득으로 하스켈을 생애 첫 프로그래밍 언어로 배웠고 그 내용을 함께 정리하여 책으로 출간하게 되었습니다. 덕분인지 기존의 하스켈 책보다 훨씬 이해하기 쉽게 잘 작성되었다는 평가를 받고 있습니다.

이 책의 1장은 하스켈이 아닌 람다 대수(lambda calculus)로 시작합니다. 람다 대수는 하스켈을 비롯한 모든 함수 언어의 이론적 배경이 되는 수학으로 함수 언어를 제대로 사용하려면 언젠가는 배워야 하는 내용인데, 이 책은 과감하게 1장에서 람다 대수를 설명하고 2장부터 하스켈에 대한 소개로 이어집니다.

이 책은 LYHGG와 Real World Haskell의 장점을 고루 섞어놓았습니다. 하스켈 언어에 대한 기본 설명도 충실하고, 배운 내용을 실제로 사용할 수 있게 여러 실례도 소개하고 있습니다. 새로 하스켈을 공부하시는 분이라면 제가 가장 추천 드리는 책이기도 합니다.

이 책은 아직 완간되지 않습니다. 대신 홈페이지에서 $59에 Early Access 버전을 구매하실 수 있습니다. 당연히 아직 한글 번역서도 존재하지 않습니다. 국내 출판사에서 번역 출간 계약을 하면 좋겠습니다.

One thought on “하스켈 입문서

  1. Pingback: 하스켈 입문서 – 서광열의 하스켈 스쿨

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s