Chapter 2. Types and Functions

Real World Haskell をこれからちょっとずつ読んでいき,そのときのメモのようなものをここに残していきたいと思う.
ツッコミ歓迎.


今日は Chapter 2.
Chapter 2. Types and Functions

type system
strong types
暗黙の型変換(coercion)が行われない
static types
型はコンパイル時に確定する
type inference
明示的にtype signatureを書かなくてもコンパイラが型を推論する

これらの特徴により,コンパイルさえ通れば実行時のエラーはまず起こらなくなる.

evaluation

Haskellは必要になるまで式を評価しない.
この特徴をnon-strict(非正格)と言い,このような評価をlazy evaluation(遅延評価)と言う.
これは式をthunkとして記録しておくことで達成されている.

polymorphism

type variable(型変数)を導入することで,parametric polymorphism(パラメータ多相)を達成している.
これは JavaGenericsC++ の template に似ている.

purity

Haskell では関数が pure であることを原則としている.
関数が pure であれば,その値はグローバル変数や状態によらず引数のみに依存するため,コードを理解しやすくなる.
また,pure な関数とそうでない関数がはっきり分かれるため,危険をもたらす impure な関数はシンプルで最小限なものとなり,プログラムの安全性が増す.