プログラミング Haskell 第 2 版(プログラミングハスケル ダイニハン)
プログラミング- 著者:
- Graham Hutton/山本和彦(グラハムハットン/ヤマモトカズヒコ)
- 出版社:
- ラムダノート
- 出版日:
- 2019年08月20日頃
- ISBN:
- 9784908686078
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
Haskell は、 1990 年に誕生した歴史あるプログラミング言語です。強力な型推論を備えた、静的型付きで遅延評価の純粋関数型言語として知られています。 Haskell を知ることは、こうした概念の背景にある計算機の理論を知り、それが実際のプログラミングにどのような効果を及ぼすかを知ることでもあります。
本書では、さまざまな例題をとおして、関数の組み合わせによりプログラムを自在に構築する力を身に着けられます。
そして、その抽象化を支える型と型クラスについて知り、アプリカティブやモナド、 Foldable 、 Traversable といった型クラスによって整理された現代の Haskell プログラミングの姿を学べます。
さらに、プログラムを手続きではなく宣言として書くことの利点のひとつとしてプログラムの論証を体験し、その応用として、ソース言語の仕様からコンパイラーを算出するという高度な例題に挑戦します。
本書の原書にあたるのは "Programming in Haskell, 2nd Edition" です。
技書の森解説
関数型プログラミングを Haskell で基礎から学びたい人に向けた教科書が『プログラミング Haskell 第 2 版』です。 Nottingham 大学コンピューターサイエンス学部教授として何千人もの学生に Haskell を教えてきた Graham Hutton による原著 Programming in Haskell, 2nd Edition を山本和彦氏が翻訳し、ラムダノートから 2019 年 8 月に刊行されました。型、再帰、高階関数からモナド、遅延評価、プログラムの論証まで、 A5 判 328 ページに関数型プログラミングの核心を体系立てて収めた一冊です。
研究と実務の両側から書かれた信頼性
作り手の顔ぶれが本書の信頼性を物語ります。版元の紹介によれば、著者の Hutton は ICFP (International Conference on Functional Programming) や Haskell Symposium の議長を務め、 ACM Distinguished Scientist にも選ばれた関数型プログラミング研究の中心人物です。訳者の山本和彦氏は IIJ に所属するプログラマーで、 Haskell コミュニティーでネットワークプロトコル関連のライブラリを開発保守してきた実務家でもあります。研究と実務の両側から Haskell を知る二人の手によることが、記述と訳文の確かさを支えています。
二部 17 章の構成と練習問題
構成は二部立てです。第 I 部「基礎概念」では、型と型クラス、関数定義、リスト内包表記、再帰関数、高階関数といった土台を、カウントダウン問題のような小さな例題を交えて積み上げます。第 II 部「高度な話題」では、対話プログラム、負けない三目並べ、モナド (第 12 章) 、モナドパーサー、 Foldable と Traversable 、遅延評価へと進み、終盤ではプログラムの論証、さらにソース言語の仕様から コンパイラー を算出するという例題に挑みます。各章に 練習問題 が付いており、手を動かしながら理解を確かめる作りです。
モナドと論証という Haskell の核心
Haskell は 1990 年に誕生した、静的型付きで遅延評価の純粋関数型言語です。副作用を型の上で分離するモナドや、文脈付きの値を統一的に扱うアプリカティブといった概念は、抽象度の高さゆえに入門者の壁になりやすい題材ですが、本書はそれらを天下り式に与えるのではなく、具体的な例題の中から必要性が立ち上がる順序で導入していきます。とりわけ第 16 章「プログラムの論証」は本書の性格が際立つ章で、プログラムを手続きではなく宣言として書くからこそ、数学の等式変形のようにプログラムの性質を証明できることを体験させてくれます。型で仕様を表現し、関数の合成で問題を分割する感覚は、 Scala や Rust 、 TypeScript の型設計にもそのまま持ち帰れる普遍的な力です。
『すごい Haskell 』との使い分けと向き不向き
Haskell 入門書としてよく並べて語られる『すごい Haskell たのしく学ぼう!』 (Miran Lipova č a 著、オーム社、 2012 年) がイラストと軽妙な語り口で敷居を下げる読み物型だとすれば、本書は簡潔で無駄のない記述を練習問題で補強する教科書型です。順に手を動かして体系を積み上げたい人、論証やコンパイラー算出まで含めて関数型プログラミングの理論的な奥行きに触れたい人には本書が合います。逆に、気楽に読み進められる語り口から入りたいなら『すごい Haskell 』を先に読み、本書で骨格を固め直す順番 も有効です。
向き不向きははっきりしています。動くアプリケーションを手早く作るハウツーを求める人や、練習問題を飛ばして結論だけ拾い読みしたい人には向きません。一方、プログラミング経験はあるものの関数型は初めてという人が章の順に例題と練習問題をこなしていけば、型と関数でプログラムを設計する思考の道具が着実に積み上がります。関数型の考え方を一度きちんと腰を据えて身につけたいエンジニアに、翻訳の質まで含めて安心して薦められる Haskell 入門書です。
言及 Qiita 記事 (6 件)
Scala 選定の結果と継続の方針 〜Advent Calendar 2016 Day 25 へのアンサー〜
♡ 55Scala, ポエム, プラットフォーム移行, 技術選定, アンサー記事Elixir版?①「プログラミングHaskell第2版」
♡ 45Haskell, Elixir継承によらないポリモーフィズム実現手法
♡ 41Haskell, Clojure, Scala, CommonLisp, ElixirElixir版?②「プログラミングHaskell第2版」
♡ 21Haskell, Elixir【Servant】 (1) Wai
♡ 11Haskell, Web, wai, warpHaskell入門からモナドまでを最速でマスターする Part 0: 準備
♡ 10Haskell, モナド