目次

I  Haskell 2010 言語
1 イントロダクション
 1.1 プログラムの構造
 1.2 Haskell カーネル
 1.3 値および型
 1.4 名前空間
2 字句構造
 2.1 表記規約
 2.2 プログラムの字句構造
 2.3 コメント
 2.4 識別子および演算子
 2.5 数値リテラル
 2.6 文字リテラルおよび文字列リテラル
 2.7 レイアウト
3
 3.1 エラー
 3.2 変数,構成子,演算子,リテラル
 3.3 カリー化された適用およびλ抽象
 3.4 演算子の適用
 3.5 セクション
 3.6 条件式
 3.7 リスト
 3.8 タプル
 3.9 ユニット式および括弧に囲まれた式
 3.10 等差数列
 3.11 リスト内包表記
 3.12 let 式
 3.13 case 式
 3.14 do 式
 3.15 フィールドラベル付きデータ型
  3.15.1 フィールドの選択
  3.15.2 フィールドラベルによる構成
  3.15.3 フィールドラベルによる更新
 3.16 式の型シグネチャ
 3.17 パターン照合
  3.17.1 パターン
  3.17.2 パターン照合の非形式的意味論
  3.17.3 パターン照合の形式的意味論
4 宣言と束縛
 4.1 型およびクラスの概要
  4.1.1 カインド
  4.1.2 型の構文
  4.1.3 クラス表明および文脈の構文
  4.1.4 型およびクラスの意味論
 4.2 ユーザ定義のデータ型
  4.2.1 代数データ型宣言
  4.2.2 型シノニム宣言
  4.2.3 データ型名の付け替え
 4.3 型クラスおよび多重定義
  4.3.1 クラス宣言
  4.3.2 インスタンス宣言
  4.3.3 導出されたインスタンス
  4.3.4 曖昧な型および多重定義された数値演算の規定値
 4.4 入れ子になった宣言
  4.4.1 型シグネチャ
  4.4.2 結合性宣言
  4.4.3 関数束縛およびパターン束縛
   4.4.3.1 関数束縛
   4.4.3.2 パターン束縛
 4.5 関数束縛およびパターン束縛の静的意味論
  4.5.1 Dependency Analysis
  4.5.2 一般化
  4.5.3 文脈簡約エラー
  4.5.4 単相性
  4.5.5 単相性制限
 4.6 カインド推論
5 モジュール
 5.1 モジュールの構造
 5.2 エクスポートリスト
 5.3 インポート宣言
  5.3.1 インポートされるもの
  5.3.2 修飾付きインポート
  5.3.3 局所的別名
  5.3.4 いくつかの例
 5.4 インスタンス宣言のインポートおよびエクスポート
 5.5 名前衝突および閉包性
  5.5.1 修飾された名前
  5.5.2 名前衝突
  5.5.3 閉包性
 5.6 標準プレリュード
  5.6.1 Prelude モジュール
  5.6.2 プレリュード名の隠蔽
 5.7 分割コンパイル
 5.8 抽象データ型
6 定義済みの型およびクラス
 6.1 Haskell の標準型
  6.1.1 真理値
  6.1.2 文字と文字列
  6.1.3 リスト
  6.1.4 タプル
  6.1.5 ユニットデータ型
  6.1.6 関数の型
  6.1.7 IO 型および IOError 型
  6.1.8 その他の型
 6.2 正格評価
 6.3 Haskell の標準クラス
  6.3.1 Eq クラス
  6.3.2 Ord クラス
  6.3.3 Read クラスおよび Show クラス
  6.3.4 Enum クラス
  6.3.5 Functor クラス
  6.3.6 Monad クラス
  6.3.7 Bounded クラス
 6.4 数値
  6.4.1 数値リテラル
  6.4.2 算術演算および数論的演算
  6.4.3 指数および対数
  6.4.4 絶対値および符号
  6.4.5 三角関数
  6.4.6 型変換および構成要素の取り出し
7 基本入出力
 7.1 標準 I/O 関数
 7.2 I/O 操作の直列化
 7.3 I/O モナドにおける例外処理
8 外部関数インターフェイス
 8.1 外部言語
 8.2 コンテキスト
  8.2.1 言語をまたぐ型の整合性
 8.3 字句構造
 8.4 外部宣言
  8.4.1 呼び出し規約
  8.4.2 外部型
  8.4.3 インポート宣言
  8.4.4 エクスポート宣言
 8.5 外部実体の仕様
  8.5.1 標準のC呼び出し
  8.5.2 Win 32 API の呼び出し
 8.6 マーシャリング
 8.7 外部Cインターフェイス
9 標準プレリュード
 9.1 プレリュード PreludeList
 9.2 プレリュード PreludeText
 9.3 プレリュード PreludeIO
10 構文リファレンス
 10.1 表記規約
 10.2 字句構文
 10.3 レイアウト
 10.4 文藝的コメント
 10.5 文脈自由構文
 10.6 結合性の解決
11 導出されるインスタンスの仕様
 11.1 Eq および Ord クラスの導出インスタンス
 11.2 Enum クラスの導出インスタンス
 11.3 Bounded クラスの導出インスタンス
 11.4 Read および Show クラスの導出インスタンス
 11.5 一例
12 コンパイラプラグマ
 12.1 インライン展開
 12.2 特殊化
 12.3 言語拡張
II  Haskell 2010 ライブラリ
13 Control.Monad
 13.1 Functor クラスおよび Monad クラス
 13.2 関数
  13.2.1 命名の慣例規則
  13.2.2 基本的な Monad 関数
  13.2.3 リスト関数の一般化
  13.2.4 モナド式の条件実行
  13.2.5 モナドの持ち上げ演算子
14 Data.Array
 14.1 不可変非正格配列
 14.2 配列の構成
 14.3 配列のアクセス
 14.4 配列の漸次更新
 14.5 導出された配列
 14.6 仕様
15 Data.Bits
16 Data.Char
 16.1 文字および文字列
 16.2 文字の分類
  16.2.1 部分範囲
  16.2.2 UNICOD の一般カテゴリ
 16.3 大文字小文字変換
 16.4 十進表記文字
 16.5 数値表現
 16.6 文字列表現
17 Data.Complex
 17.1 直交形式
 17.2 極形式
 17.3 共役
 17.4 仕様
18 Data.Int
 18.1 符号付き整数型
19 Data.Ix
 19.1 Ix クラス
 19.2 Ix クラスインスタンスの導出
20 Data.List
 20.1 基本関数
 20.2 リストの変換
 20.3 リストの簡約(畳み込み)
  20.3.1 特殊化した畳み込み
 20.4 リストの構築
  20.4.1 スキャン
  20.4.2 蓄積写像
  20.4.3 無限リスト
  20.4.4 展開
 20.5 部分リスト
  20.5.1 部分リストの取り出し
  20.5.2 述語
 20.6 リストの検索
  20.6.1 等価性による検索
  20.6.2 述語を使う検索
 20.7 リストのインデックス付け
 20.8 リストの結合と分解
 20.9 特殊なリスト
  20.9.1 文字列上の関数
  20.9.2 「集合」演算
  20.9.3 順序リスト
 20.10 一般化された関数
  20.10.1 By」演算
   20.10.1.1 ユーザが等価性を提供する(Eq 文脈と置き換える)
   20.10.1.2 ユーザが比較を提供する(Ord 文脈と置き換える)
  20.10.2 generic」演算
21 Data.Maybe
 21.1 Maybe 型と演算
 21.2 仕様
22 Data.Ratio
 22.1 仕様
23 Data.Word
 23.1 符号なし整数型
24 Foreign
25 Foreign.C
26 Foreign.C.Error
 26.1 errno 値のHaskellにおける表現
  26.1.1 よく使われる errno 記号
  26.1.2 Errno 関数
  26.1.3 失敗する可能性のある入出力操作に対応するガード
27 Foreign.C.String
 27.1 C文字列
  27.1.1 ロケール依存エンコーディングの使用
  27.1.2 8-bit 文字の使用
 27.2 Cワイド文字列
28 Foreign.C.Types
 28.1 Cの型の表現
  28.1.1 整数型
  28.1.2 数値型
  28.1.3 浮動小数点数型
  28.1.4 その他の型
29 Foreign.ForeignPtr
 29.1 ファイナライズされるデータポインタ
  29.1.1 基本演算
  29.1.2 低水準演算
  29.1.3 管理されたメモリのアロケーション
30 Foreign.Marshal
31 Foreign.Marshal.Alloc
 31.1 メモリアロケーション
  31.1.1 局所的なアロケーション
  31.1.2 動的なアロケーション
32 Foreign.Marshal.Array
 32.1 配列のマーシャリング
  32.1.1 アロケーション
  32.1.2 マーシャリング
  32.1.3 アロケーションとマーシャリングの組み合わせ
  32.1.4 コピー
  32.1.5 長さの計算
  32.1.6 インデックス付け
33 Foreign.Marshal.Error
34 Foreign.Marshal.Utils
 34.1 一般的なマーシャリングユーティリティ
  34.1.1 アロケーションとマーシャリングの組み合わせ
  34.1.2 真理値のマーシャリング(非ゼロが Trueに対応)
  34.1.3 Maybe 値のマーシャリング
  34.1.4 格納可能オブジェクトのリストのマーシャリング
  34.1.5 memcpy および memmove に対する Haskell 流のインターフェイス
35 Foreign.Ptr
 35.1 データポインタ
 35.2 関数ポインタ
 35.3 情報落ちのない整数とポインタの間の変換
36 Foreign.StablePtr
 36.1 Haskellの値への不変ポインタ
  36.1.1 C側のインターフェイス
37 Foreign.Storable
38 Numeric
 38.1 表示
 38.2 読み込み
 38.3 その他
39 System.Environment
40 System.Exit
41 System.IO
 41.1 IO モナド
 41.2 ファイルとハンドル
  41.2.1 標準ハンドル
 41.3 ファイルのオープンおよびクローズ
  41.3.1 ファイルのオープン
  41.3.2 ファイルのクローズ
  41.3.3 特殊な場合
  41.3.4 ファイルのロック
 41.4 ハンドルの操作
  41.4.1 ファイルサイズの決定および変更
  41.4.2 入力終端の検出
  41.4.3 バッファリング操作
  41.4.4 ハンドルの位置変更
  41.4.5 ハンドルの性質
  41.4.6 端末操作
  41.4.7 ハンドル状態の表示
 41.5 テキストの入出力
  41.5.1 テキスト入力
  41.5.2 テキスト出力
  41.5.3 標準入力および標準出力の特殊な場合
42 System.IO.Error
 42.1 I/O エラー
  42.1.1 I/O の分類
  42.1.2 I/O エラーの属性
 42.2 I/O エラーの型
 42.3 I/O エラーの投出と捕捉