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
,使用{{1}}子句会产生不同的结果吗?