-1

こんにちはstackoverflowコミュニティ、

奇妙なエラーが発生する、かなり単純なコードがあります。これが私のコードです:

multiplyByTwo 0 = 1
myltiplyByTwo x = 2 * multiplyByTwo (x-1)

ご覧のとおり、これは単純な再帰です。「関数multiplyByTwoの非網羅的なパターン」例外が発生します。すでに最低値を設定しているので、なぜこれを取得しているのかわかりません。multiplyByTwo 0 = 1したがって、その時点以降、関数はそれ自体を呼び出していないと思います。私が言っているのは、なぜこのパターンが「非網羅的」であるのか理解できないということです。xに入力する数値は正であると想定しています。

あなたが与えることができるどんな助けにも感謝します。

4

1 に答える 1

7

2行目にタイプミスがあります。

myltiplyByTwo x = 2 * multiplyByTwo (x-1)
 ^

したがって、これは新しい関数をmultiplyByTwo定義し、引数0に対してのみ定義されます。

于 2012-10-16T23:20:47.917 に答える