関数型プログラミング言語Haskell Part18
■ このスレッドは過去ログ倉庫に格納されています
0283デフォルトの名無しさん
2012/05/03(木) 11:17:28.41正格性フラグの付いたデータ型のことですが、
data X = X !Int
・・・
let x = X a
この場合、x の値が実際に必要になるかどうかに関わらず、
X a の a が評価されるという意味でしょうか。
もうひとつ、
data F = F !(Int -> Int)
・・・
let f = F g
この場合、g が評価されたというのは、どういう状態を指すのでしょうか。
と言うのも、関数ではない値なら弱頭部正規形になるまで評価され、
それがどういった形なのか頭の中にイメージ出来るのですが、
関数の評価という意味がいまひとつイメージ出来ません。
もしかして、g w = if v then 関数1 else 関数2 などと場合分けされていた場合に、
f = F g の時点でこの v まで評価されて関数1か関数2かが決定されるということであり、
単に g w = 2+w などという関数であれば正格性フラグを付ける意味はない、
ということでしょうか。
■ このスレッドは過去ログ倉庫に格納されています