大多数时候有什么理由不使用 StrictPragma 吗?
Is there any reason not to use StrictPragma most of the time?
以后的GHC版本会支持https://ghc.haskell.org/trac/ghc/wiki/StrictPragma
因此评估可能类似于 C、JavaScript 等其他语言
对于性能和对代码执行的理解,严格评估看起来更好。
是的,有像(&&)这样的函数需要使用惰性参数,但应该经常使用,可以使用~
。
那么,大多数时候不使用 StrictPragma 有什么理由吗?
这真的取决于手头的数据类型。在清单上,这将是非常有害的。
f n = foldl' (+) 0 [1..n]
可以是 运行 常量 space(即使没有砍伐森林)。如果列表类型是严格的,则需要线性 space.
无限列表成语变得不可能
head $ filter p [1..]
zip xs [1..]
fibs = 0:1:zipWith (+) fibs (tail fibs)
在高性能数字代码中,严格性通常会带来更好的性能。
以后的GHC版本会支持https://ghc.haskell.org/trac/ghc/wiki/StrictPragma
因此评估可能类似于 C、JavaScript 等其他语言
对于性能和对代码执行的理解,严格评估看起来更好。
是的,有像(&&)这样的函数需要使用惰性参数,但应该经常使用,可以使用~
。
那么,大多数时候不使用 StrictPragma 有什么理由吗?
这真的取决于手头的数据类型。在清单上,这将是非常有害的。
f n = foldl' (+) 0 [1..n]
可以是 运行 常量 space(即使没有砍伐森林)。如果列表类型是严格的,则需要线性 space.
无限列表成语变得不可能
head $ filter p [1..]
zip xs [1..]
fibs = 0:1:zipWith (+) fibs (tail fibs)
在高性能数字代码中,严格性通常会带来更好的性能。