Haskell 2010

言語報告書

Simon Marlow
(editor)

Copyright notice.

The authors and publisher intend this Report to belong to the entire Haskell community, and grant permission to copy and distribute it for any purpose, provided that it is reproduced in its entirety, including this Notice. Modified versions of this Report may also be copied and distributed for any purpose, provided that the modified version is clearly presented as such, and that it does not claim to be a definition of the language Haskell 2010.

目次
緒言
 目標
 Haskell 2010: 言語とライブラリ
 Haskell 98 への拡張
 Haskell の情報源
 言語の構築
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.16 式の型シグネチャ
 3.17 パターン照合
4 宣言と束縛
 4.1 型およびクラスの概要
 4.2 ユーザ定義のデータ型
 4.3 型クラスおよび多重定義
 4.4 入れ子になった宣言
 4.5 関数束縛およびパターン束縛の静的意味論
 4.6 カインド推論
5 モジュール
 5.1 モジュールの構造
 5.2 エクスポートリスト
 5.3 インポート宣言
 5.4 インスタンス宣言のインポートおよびエクスポート
 5.5 名前衝突および閉包性
 5.6 標準プレリュード
 5.7 分割コンパイル
 5.8 抽象データ型
6 定義済みの型およびクラス
 6.1 Haskell の標準型
 6.2 正格評価
 6.3 Haskell の標準クラス
 6.4 数値
7 基本入出力
 7.1 標準 I/O 関数
 7.2 I/O 操作の直列化
 7.3 I/O モナドにおける例外処理
8 外部関数インターフェイス
 8.1 外部言語
 8.2 コンテキスト
 8.3 字句構造
 8.4 外部宣言
 8.5 外部実体の仕様
 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 関数
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.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.4 リストの構築
 20.5 部分リスト
 20.6 リストの検索
 20.7 リストのインデックス付け
 20.8 リストの結合と分解
 20.9 特殊なリスト
 20.10 一般化された関数
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における表現
27 Foreign.C.String
 27.1 C文字列
 27.2 Cワイド文字列
28 Foreign.C.Types
 28.1 Cの型の表現
29 Foreign.ForeignPtr
 29.1 ファイナライズされるデータポインタ
30 Foreign.Marshal
31 Foreign.Marshal.Alloc
 31.1 メモリアロケーション
32 Foreign.Marshal.Array
 32.1 配列のマーシャリング
33 Foreign.Marshal.Error
34 Foreign.Marshal.Utils
 34.1 一般的なマーシャリングユーティリティ
35 Foreign.Ptr
 35.1 データポインタ
 35.2 関数ポインタ
 35.3 情報落ちのない整数とポインタの間の変換
36 Foreign.StablePtr
 36.1 Haskellの値への不変ポインタ
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.3 ファイルのオープンおよびクローズ
 41.4 ハンドルの操作
 41.5 テキストの入出力
42 System.IO.Error
 42.1 I/O エラー
 42.2 I/O エラーの型
 42.3 I/O エラーの投出と捕捉
Bibliography