したがって、2つのパラメーターを受け取る非常に単純な関数があります。1つ目は1時間(0から23の間)で、2つ目は1分(0から59の間)です。この関数は、時間と1分を返し、時間を美しいスタイルにフォーマットします。例として、をhour 11 12
返し11 heures et 13 minutes
ます。時間のフランス語形式でごめんなさい。
したがって、この関数ではshow
関数を使用し、パラメーターは数値である必要があるため、型宣言があり(Num a, Show a) => a -> a -> String
ます。しかし、この関数を試してみると、エラーが発生し、GHCから型制約を追加するように言われましたが、この場合Eq
に型制約が必要な理由がわかりませんEq
。コードがあります(関数で使用されているフランス語のテキストについては申し訳ありませんが、関数の名前とテキストがわからなくてもそれほど重要ではないと思います):
heure :: (Num a, Eq a, Show a) => a -> a -> String
heure 23 59 = "Minuit"
heure 12 m = "Midi et " ++ show (m+1) ++ " minutes"
heure h 59 = show (h+1) ++ " heures"
heure h m = show h ++ " heures et " ++ show (m+1) ++ " minutes"
だから:私が使用しない場合Eq
、私はエラーがあり、それを使用すると私のコードは正しいです。なんで?
説明ありがとうございます!