この機能は、間違っているとコンパイルされません。Numを0と比較できないのはなぜですか?
checkIsZero :: (Num a) => a -> String
checkIsZero a = if a == 0
then "Zero"
else "Not zero"
これが原因で表現a == 0
でNum
と0
との比較では動作しません。 Num
からIntegral
に変更すると、これが有効な機能になります。
0
に私の番号を比較させないこの邪悪な魔法は何ですか?
として定義され、numの動作するようです。 ghcを使用していますか?エラーメッセージは何ですか? – jev
私は上記の関数を 'functions.hs'に入れ、' ghci'の ':lfunction.hs'を実行し、' == '' –
@jevの使用から生じるエラーを'推測できません(Eq a) GHC 7.4以来、少なくともその型署名では動作しません。 'Eq'は' Num 'によってもはや暗示されません。 –