非正格

非正格

(non-strict)

引数を必要になるまで評価しない(call-by-need)

ような言語の性質。

HaskellConcurrent Clean等がその例。

例えば

bottom = bottom

f x = 3

のとき

bottomは_|_(停止しない式)であり

正格言語であれば f botを評価しようとすると

無限ループに陥り、f botもまた_|_になるが

Haskellではbottomは必要が無いので評価されず

評価は停止し3が返される。

(例はやさしいHaskell入門より)