take.hs (以下)をコンパイルすると、 Non-exaustive Patterns in transExpr: Fatbar (OtherExpression (Const ...
take' :: Int -> [a] -> [a] take' n xs | n <= 0 = [] take' n [] = [] take' n (x:xs) = x : take' (n-1) xs main = print $ take 5 [1, 2, 3, 4, 5, 6, 7]
なお、3 行目をtake' _ [] = [] にすると、既知のエラーだが、 matchVarCon error: ([PWildcard, ... となる。
035 対処により、本件も解決…と思ったら勘違い。
take.hs, take2.hs ともに、take' を定義しておきながら、 lib/Prelude.hs の take を参照していたのでテストになっていなかった。 それを書き直したら、やはりエラー。ランタイムで abend するようになった。
083 の対処過程で、この take.hs の形には対応した。
また、本件解決したので、lib/Prelude.hs の記述も直した。