9

リストの末尾のみを返す関数に問題があります。関数は myTail であり、入力が空のリストであっても、使用可能な結果が得られるはずです。

パターン マッチング、保護された方程式、条件式の 3 つの方法をすべて理解したい

これは機能します:

> myTail_pat :: [a] -> [a]

> myTail_pat (x:xs) = xs
> myTail_pat [] = []

でもこれは:

> myTail_guard (x:xs)   | null xs = []
>               | otherwise = xs

次のエラーが表示されます: Program error: pattern match failure: myTail_guard [] パターンなしで関数を宣言するにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

17

パターンx:xsが空のリストと一致しません。あなたがする必要があります:

myTail_guard xs
  | null xs   = []
  | otherwise = tail xs
于 2009-11-18T22:17:24.033 に答える