在这种情况下,为什么使用模式(_:_)而不是简单的通配符?

时间:2015-02-10 17:01:12

标签: list haskell pattern-matching empty-list

在我浏览GHC.List.hs时,我遇到了以下definition for null

-- | Test whether a list is empty.
null                    :: [a] -> Bool
null []                 =  True
null (_:_)              =  False

我很惊讶第二个等式不是

null _                  =  False

这个替代等式在语法上是有效的,不会改变null的语义:因为第一个模式是空列表,第二个模式只有在参数是非空列表时才会使用。此外,在我看来,这个替代方程式更简单,更易读。这引出了一个问题:

在这里使用模式(_:_)而不是通配符是否有特殊原因?

(如果这是一种优化形式,请详细说明。)

0 个答案:

没有答案