今日は 第三章: 関数の構文 パターンマッチの途中(位置1086/11175)まで読み進めました。
head' :: [a] -> a head' [] = error "Can't call head on an empty list, dummy!" head' (x:_) = x
では x:_ を丸括弧で囲わなくてはいけないけど
badAdd :: (Num a) => [a] -> a
では (Num a) の丸括弧は不要のようで、今ひとつ演算子?の優先順位が感覚的に理解できていません。
ソースコードファイルの先頭に
{-# OPTIONS -Wall #-}
と書くと読み込んだ時に警告を表示してくれるので便利とのことなので、そうすることにしました。