foo x y = x*x + y
fat x y = let xx = x*x in xx + y
bar x = \y -> x*x + y
baz x = let xx = x*x in \y -> xx + y
foo' = foo 2
fat' = fat 2
bar' = bar 2
baz' = baz 2
foo'
、fat'
、bar'
、またはを繰り返し呼び出すと、baz'
実行時のパフォーマンスが異なりますか? 基本的に、GHC がどのように値を保持し、いつ中間値を放棄するかに興味があります。句を使用すると、where
置換すると異なる結果にlet
なりますか?