# 064: take.hs で Non-exaustive Patterns in transExpr [↑up](bunny_notes) - issued: 2020-05-07 - 分類: A サンプルコードが fail - status: Closed (2020-05-19) ## 概要 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, ...} となる。

## 調査ログ
## 2020-05-15

[035](bissue035) 対処により、本件も解決…と思ったら勘違い。

take.hs, take2.hs ともに、${take'} を定義しておきながら、
lib/Prelude.hs の ${take} を参照していたのでテストになっていなかった。
それを書き直したら、やはりエラー。ランタイムで abend するようになった。

## 2020-05-19

[083](bissue083) の対処過程で、この take.hs の形には対応した。

- take.hs : sample215.hs 
- take2.hs: sample216.hs

また、本件解決したので、lib/Prelude.hs の記述も直した。