像这样的模式:
front :: [a] -> a
front (x:_) = x
front _ = error "Empty list"
似乎在 Haskell 中很常见,但我清楚地记得当我开始学习 Haskell 时学习了以下内容:
dec :: (Integral a) => a -> a
dec (x+1) = x
dec _ = error "Bottom"
但是,ghc
似乎拒绝了那段代码,并指出:
Parse error in pattern: x + 1
虽然hugs
接受它就好了。那么,这是否有效的 Haskell 以及为什么这些编译器的行为不同。