Haskell 入門 ~関数型プログラミング言語の基礎と実践~
第一章 はじめてのHaskell
一般に関数型プログラミング言語と呼ぶときは,数学的な関数の利用を推奨しているプログラミング言語を指します
第二章 基本の文法
関数を定義する際に! を先頭につけるだけで先行評価を強制(BangPatterns を有効にする)
code:!
Prelude> :set -XBangPatterns
Prelude> f !x = 1
Prelude> f 0 div 0
*** Exception: divide by zero
不可反駁パターン(irrefutable patterns)(ふかはんばくぱたーん)
パターン内の変数を実際に使うタイミングまで評価を遅らせる
code:haskell
case undefine of (_,_) -> True -- *** Exception: Prelude.undefine
case undefine of ~(_,_) -> True -- True
第三章 型・型クラス
それぞれの識別子は型でしょうか式でしょうか
code:haskell
data A = B
data C d = E { f :: d, g :: A }
data H = I A (C A)
型制約
型制約はclass宣言でもinstance宣言でも書けるぞ!ややこしい!
第四章 I/O処理
誤字
P90,P104,P113(?)
P152