本文へスキップします。

【参】モーダルJS:読み込み
書籍DB:詳細

すごいHaskellたのしく学ぼう!

Haskellの達人たちが推薦する楽しい入門書

丁寧な解説とポップな例題で本物のHaskellプログラミングを習得できる入門書。
原書の"Learn You a Haskell for Great Good!"は、型、遅延評価、モナドといった難しい概念にも自然に慣れていけるよう工夫された構成、他の言語経験者への配慮に加え、原著者による楽しいイラストによって、もっとも分かりやすいHaskell本として、高く評価されています。
訳者序文
イントロダクション
で、Haskellって何なの?
Haskellの世界に飛び込むのに必要なもの
謝辞
第1章 はじめの第一歩
1.1 関数呼び出し
1.2 赤ちゃんの最初の関数
1.3 リスト入門
連結
リストの要素へのアクセス
リスト中のリスト
リストの比較
さらなるリスト操作
1.4 レンジでチン!
1.5 リスト内包表記
1.6 タプル
タプルを使う
ペアを使う
直角三角形を見つける
第2章 型を信じろ!
2.1 明示的な型宣言
2.2 一般的なHaskellの型
2.3 型変数
2.4 型クラス 初級講座
Eq 型クラス
Ord 型クラス
Show 型クラス
Read 型クラス
Enum 型クラス
Bounded 型クラス
Num 型クラス
Floating 型クラス
Integral 型クラス
最後に ―― 型クラスに関するいくつかの注意
第3章 関数の構文
3.1 パターンマッチ
タプルのパターンマッチ
リストのパターンマッチとリスト内包表記
as パターン
3.2 場合分けして、きっちりガード!
3.3 where?!
where のスコープ
パターンマッチと where
where ブロックの中の関数
3.4 let It Be
リスト内包表記での let
GHCi でのlet
3.5 case 式
第4章 Hello 再帰!
4.1 最高に最高!
4.2 さらにいくつかの再帰関数
replicate
take
reverse
repeat
zip
elem
4.3 クイック、ソート!
アルゴリズム
コード
4.4 再帰的に考える
第5章 高階関数
5.1 カリー化関数
セクション(という名のセクション)
関数を表示する
5.2 高階実演
zipWithを実装する
flipを実装する
5.3 関数プログラマの道具箱
map 関数
filter 関数
mapとfilterのさらなる例
map関数に複数の引数を与える
5.4 ラムダ式
5.5 畳み込み、見込みアリ!
foldlで左畳み込み
foldrで右畳み込み
foldl1とfoldr1関数
いくつかの畳み込みの例
別の視点から見た畳み込み
無限リストを畳み込む
スキャン
5.6 \$ を使った関数適用
5.7 関数合成
多引数関数の関数合成
ポイントフリースタイル
第6章 モジュール
6.1 モジュールをインポートする
6.2 標準モジュールの関数で問題を解く
単語を数える
干し草の山から針を探す
シーザー暗号サラダ
正格な左畳み込みにて
かっこいい数を見つけよう
6.3 キーから値へのマッピング
だいたい大丈夫(連想リスト)
Data.Map に潜入せよ
6.4 モジュールを作ってみよう
幾何学モジュール
階層的モジュール
第7章 型や型クラスを自分で作ろう
7.1 新しいデータ型を定義する
7.2 形づくる
Pointデータ型で形を整える
Shapeをモジュールとしてエクスポートする
7.3 レコード構文
7.4 型引数
自動車は型引数を取るべきか?
三次元ベクトル
7.5 インスタンスの自動導出
人間の平等
読み方を書いてみせてよ
順番を守ってください!
何曜日でもいいよ
7.6 型シノニム
電話帳をかっこよくしよう
型シノニムの多相化
そこを左に行って、すぐ右へ
7.7 再帰的なデータ構造
リストの改善
木を植えよう
7.8 型クラス 中級講座
Eq型クラスの内部
交通信号データ型
サブクラス化
多相型を型クラスのインスタンスに
7.9 YesとNoの型クラス
7.10 Functor型クラス
MaybeはFunctorだよ、たぶん
TreeもFunctorの森に
EitherはFunctorであるか否か
7.11 型を司るもの、種類
第8章 入出力
8.1 不純なものと純粋なものを分離する
8.2 Hello, World!
8.3 I/O アクションどうしをまとめる
I/Oアクションの中で let を使う
逆順に表示する
8.4 いくつかの便利なI/O関数
putStr
putChar
print
when
sequence
mapM
forever
forM
8.5 I/O アクションおさらい
第9章 もっと入力、もっと出力
9.1 ファイルとストリーム
入力のリダイレクト
入力ストリームから文字列を得る
入力を変換する
9.2 ファイルの読み書き
withFile 関数を使う
ブラケットの時間
ハンドルを握れ!
9.3 ToDoリスト
アイテムの削除
クリーンアップ
9.4 コマンドライン引数
9.5 ToDoリストをもっと楽しむ
マルチタスクタスクリスト
不正な入力に対応する
9.6 ランダム性
コイントス
ランダムな関数をもっと
ランダム性とI/O
9.7 bytestring
正格bytestringと遅延bytestring
bytestringを使ったファイルのコピー
第10章 関数型問題解決法
10.1 逆ポーランド記法電卓
RPN記法の式を計算
RPN関数を書く
演算子を追加しよう
10.2 ヒースロー空港からロンドンへ
最速経路を計算する
道路網をHaskellで表現する
最短経路関数を求めよ!
入力から道路網を受け取る
第11章 ファンクターからアプリカティブファンクターへ
11.1 帰ってきたファンクター
ファンクターとしてのI/Oアクション
ファンクターとしての関数
11.2 ファンクター則
第一法則
第二法則
法則を破る
11.3 アプリカティブファンクターを使おう
Applicativeちゃんと仲良くしてあげてね!
Maybeはアプリカティブファンクター
アプリカティブ・スタイル
リスト
IOもアプリカティブファンクターだよ!
関数もアプリカティブだよ
Zipリスト
アプリカティブ則
11.4 アプリカティブの便利な関数
第12章 モノイド
12.1 既存の型を新しい型にくるむ
newtypeを使って型クラスのインスタンスを作る
newtypeと遅延評価
type vs. newtype vs. data
12.2 Monoid大集合
Monoid型クラス
モノイド則
12.3 モノイドとの遭遇
リストはモノイド
ProductとSum
AnyとAll
Orderingモノイド
Maybeモノイド
12.4 モノイドで畳み込む
第13章 モナドがいっぱい
13.1 アプリカティブファンクターを強化する
13.2 Maybeから始めるモナド
13.3 Monad型クラス
13.4 綱渡り
ひたすらコーディング
うゎぁあああああ落ちるぅぅうううああああ
ロープの上のバナナ
13.5 do記法
do自由自在
帰ってきたピエール
パターンマッチと失敗
13.6 リストモナド
do記法とリスト内包表記
MonadPlusとguard関数
騎士の旅
13.7 モナド則
左恒等性
右恒等性
結合法則
第14章 もうちょっとだけモナド
14.1 Writer?中の人なんていません!
モノイドが助けにきたよ
Writer型
Writerをdo記法で使う
プログラムにログを追加しよう!
非効率なリスト構築
差分リストを使う
性能の比較
14.2 Reader?それはあなたです!
モナドとしての関数
Readerモナド
14.3 計算の状態の正体
状態付きの計算
スタックと石
Stateモナド
状態の取得と設定
乱数とStateモナド
14.4 Errorを壁に
14.5 便利なモナディック関数特集
liftMと愉快な仲間たち
join関数
filterM
foldM
14.6 安全な逆ポーランド記法電卓を作ろう
14.7 モナディック関数の合成
14.8 モナドを作る
第15章 Zipper
15.1 歩こう
背後に残った道しるべ
来た道を戻る
注目している木を操る
真っすぐ、てっぺんまで行って、新鮮でおいしい空気を吸おう!
15.2 リストに注目する
15.3 超シンプルなファイルシステム
このファイルシステムのジッパーを作ろうぜ!
ファイルシステムの操作
15.4 足下にご注意
15.5 読んでくれてありがとう!
付録A:マルチバイト文字列処理に関する訳者補足
A.1 文字コードとtext
A.2 OverloadedStrings拡張
A.3 ViewPatterns拡張
付録B:訳語一覧
索引