入門 Haskell プログラミング

ニュウモンハスケルプログラミング

入門 Haskell プログラミングの表紙
プログラミング
著者:
Will Kurt / 株式会社クイープ(ウィル・カート / カブシキガイシャクイープ)
出版社:
翔泳社
出版日:
2019年07月31日頃
ISBN:
9784798158662
在庫:
在庫あり
5(3 件 / 楽天ブックス)
Haskell

なぜ注目されているか

言及数
398位
総合705位 ↑ 6 ランクアップ 言及 7 件
01120222023202420252026

書籍紹介

「コンピュータのプログラミング」から脱却し、
“学術”ではない、実用度重視の Haskell 入門書

Haskell は、関数型プログラミングを研究する対象としての側面が強すぎ、一般的なアプリケーション構築を目的とした開発言語の側面が、おざなりにされがちでした。そのため、他の言語 (Java とか C/C++ とか C# とか) がこなす、ありふれたアプリケーションを Haskell で構築しようとすると、キーボードを叩く指が止まってしまうことがありました。本書は関数型プログラミングの基本を押さえつつ、実用的なプログラムを書けるようなレベルに誘う一冊です。

もちろん、そのためにはプログラミング言語としての基礎的な知識や、Haskell ならではの技法・手法の理解が欠かせません。本書では、最終的に I/O を使用し、乱数を生成し、DB アプリケーションを作れるところまで道筋を示します。

二度と Haskell に触れないとしても、この言語 (と、その思想) に触れることで、
・安全で機能的なコードを書くこと

・問題を注意深くモデル化すること

を身につけることができます。

つまるところ、抽象化についてより深く思考し、あらゆる言語によるコードの潜在的なバグの発見に繋がります。
また、プログラミング言語理論を理解する上での特訓にもなるはずです。というのも、Haskell の言語機能は、常に新しいプログラミング言語へ、そして既存の言語での新しい機能として発展しているからです。

この本は、
・プログラミングスキルとプログラミング言語の理解を次のレベルに引き上げたい、既存のプログラミング経験のある人

を対象としていますが、根気強く読み解いていけば、必ず視野は広がります。そして、Haskell とその機能をよく知っていれば、今後何年にもわたってプログラミングの地平線を越えて何が起きているのかを理解する上での足がかりとなります。

本書は

Will Kurt , "Get Programming with Haskell"
ISBN 9781617293764, Manning Publications Co., 2018 March

の日本語版です。

【本書のポイント】

・7 つのユニットと 42 の短い章構成

・節ごとの理解度チェック

・章ごとの練習問題

・豊富な補足事項とポイント詳解

【読者が得られること】

・関数型プログラミングの基礎知識

・Haskell による実用的なプログラミング能力

・抽象度の高い思考方法

技書の森解説

Haskell の関数型プログラミングの基本を押さえながら、ファイルや HTTP、JSON、データベースを扱う実用的なプログラムを書けるところまで進む入門書です。『入門 Haskell プログラミング』 (Will Kurt 著、株式会社クイープ 監訳、翔泳社、2019 年 7 月 31 日発売) は、Manning Publications から 2018 年 3 月に刊行された Get Programming with Haskell の日本語版です。版元は本書を、学術ではない実用度重視の Haskell 入門書と位置づけ、最終的に I/O を使用し、乱数を生成し、DB アプリケーションを作れるところまで道筋を示すと案内しています。想定する読者は、プログラミングスキルとプログラミング言語の理解を次のレベルに引き上げたい、既存のプログラミング経験のある人です。

7 つのユニットと 42 のレッスン、関数の基礎から実践 Haskell まで

目次は LESSON 1「Haskell を使用するための準備」に始まり、UNIT 1「関数型プログラミングの基礎」から UNIT 7「実践 Haskell」までの 7 つのユニットに LESSON 2 から LESSON 42 が収まる構成で、巻末に次のステップを示すあとがきと練習問題の解答が付きます。UNIT 1 はラムダ関数とレキシカルスコープ、ファーストクラス関数、クロージャと部分適用、リスト、再帰、高階関数を扱います。UNIT 2「型の紹介」と UNIT 3「型によるプログラミング」は、型の基礎、カスタム型、型クラス、Semigroup と Monoid、Maybe 型へ進みます。UNIT 4「Haskell の I/O」は IO 型、コマンドラインと遅延 I/O、テキストと Unicode、ファイル、バイナリデータを、UNIT 5「コンテキストでの型の操作」は Functor、Applicative、Monad の各型クラスと do 表記、リストモナドを取り上げます。UNIT 6「コードの整理とプロジェクトのビルド」はモジュール、stack によるビルド、QuickCheck を使ったプロパティテストを、UNIT 7 は Either 型によるエラー処理、HTTP リクエスト、Aeson による JSON の処理、データベースの使用、ステートフルな配列を扱います。UNIT 1 から UNIT 6 までは、いずれも演習のレッスンで締めくくられます。版元は、節ごとの理解度チェックと章ごとの練習問題も特徴に挙げています。

純粋な関数と型で副作用を閉じ込める考え方

Haskell は、関数が同じ引数に対して常に同じ値を返し、外の状態を書き換えない 純粋関数 を基本にする言語です。画面への出力やファイルの読み書きのような副作用は IO という型で区別されるため、型を見るだけで、その関数が外の世界に触れるかどうかが分かります。データの形は、複数の値を組にする型と、いくつかの候補のどれか 1 つを表す型を組み合わせる 代数的データ型 で表します。値が無いかもしれない状況も専用の型で表すので、null の参照による実行時の失敗をコンパイルの段階で防ぎやすくなります。Functor、Applicative、Monad という型クラスの段は、文脈に包まれた値に関数を適用する方法を一般化したもので、モナド は処理を順につなぐ形まで扱える最も表現力の高い段です。本書の目次では、UNIT 3 と UNIT 4 で Maybe 型と IO 型を具体的に使ったあとに、UNIT 5 で Functor から Monad へ進む順になっています。

既存の言語で開発してきた人に向く理由

版元が想定するのは既存のプログラミング経験のある人で、紹介文は Java や C/C++、C# のような言語がこなすありふれたアプリケーションを、Haskell で構築しようとすると手が止まるという問題意識から書き起こされています。ほかの言語で業務のプログラムを書いてきた人が、同じ種類の処理を Haskell でどう組み立てるかを学ぶのに合う本です。逆に、プログラミングそのものが初めての人には前提が合わず、型理論の厳密な議論を求める人には、学術ではなく実用を重視するという版元の方針と目的が違います。stack や各ライブラリの使い方は、2019 年の日本語版の刊行時点 (原書は 2018 年) のものとして読む必要があります。版元は、二度と Haskell に触れないとしても、安全で機能的なコードを書くことや問題を注意深くモデル化することを身につけられると述べています。普段の言語でも型で誤りを防ぐ設計を取り入れたい開発者にとって、関数の基礎から実際に動くプログラムまでを一続きで手を動かして進められる一冊です。

言及した記事 (7 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: