Haskell 模式匹配通常是严格的,例如,f (x:xs) = ...
需要将输入列表评估为(thunk : thunk)。但有时不需要这样的评估,并且函数可以对某些参数不严格,例如f (x:xs) = 3
.
理想情况下,在这种情况下,我们可以避免评估参数以获得 的行为const 3
,这可以通过无可辩驳的模式来完成:f ~(x:xs) = 3
. 这给我们带来了性能优势和更大的容错能力。
我的问题是:GHC 是否已经通过某种严格分析实现了这种转换?如果您也可以指出我的一些读物,请不胜感激。