このようなパターン:
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であるかどうか、そしてなぜこれらのコンパイラーは異なった振る舞いをするのですか?