私の階乗関数され、以下の階乗関数と間違っているもの:ハスケル:
factorial :: Integer -> Integer
factorial n
| n < 0 = -1
| n > 0 = n * factorial (n-1)
| n == 0 = 1
私が推測するには、私はすべてのケースをカバー(+ VEの、-ve、0)。上記のコードを読み込もうとすると、次の警告が表示されます。なぜ私は警告を受けていますか?
Prelude> :load Fact.hs
[1 of 1] Compiling Main (Fact.hs, interpreted)
Fact.hs:2:1: Warning:
Pattern match(es) are non-exhaustive
In an equation for ‘factorial’: Patterns not matched: _
Ok, modules loaded: Main.
ケースを '追加、と言うことです。ここでは
はそれを修正し、また、いくつかの繰り返しを削除する提案ですそうでなければ=エラー "不可能なことが起きました。" – AJFarmar私はポールが合法的なケースの1つをキャッチオールケースで扱うことを意味すると思います。私は[できるだけ「エラー」から離れる](http://programmers.stackexchange.com/questions/252977/cleanest-way-to-report-errors-in-haskell)。 – zoul