質問1
こんにちは、WinGHCi で意図的に次の間違ったコードを実行した場合:
3 4
次に、表示されるエラーメッセージは
<interactive>:1:1:
No instance for (Num (a0 -> t0))
arising from the literal `3'
Possible fix: add an instance declaration for (Num (a0 -> t0))
In the expression: 3
In the expression: 3 4
In an equation for `it': it = 3 4
とはNo instance for (Num (a0 -> t0))
どういう意味ですか?
質問2
次のコードはなぜですか:
(+) 2 3 4
<interactive>:1:7:
No instance for (Num (a0 -> t0))
arising from the literal `3'
Possible fix: add an instance declaration for (Num (a0 -> t0))
In the second argument of `(+)', namely `3'
In the expression: (+) 2 3 4
In an equation for `it': it = (+) 2 3 4
2 番目のコードとはわずかに異なるエラーが発生します。
2+3 4
<interactive>:1:3:
No instance for (Num (a1 -> a0))
arising from the literal `3'
Possible fix: add an instance declaration for (Num (a1 -> a0))
In the expression: 3
In the second argument of `(+)', namely `3 4'
In the expression: 2 + 3 4
つまり、最初のコード部分にNo instance for (Num (a0 -> t0))
は、2 番目のコード部分と同じように がありますNo instance for (Num (a1 -> a0))
。
【イーヒルドへの対応】
(質問は回答コメントから移動しました):
1) 後者の 2 つの表現が異なることは理解していますが、通訳者が(Num (a0 -> t0))
前者と(Num(a1 -> a0))
後者を選択する理由を理解する必要はないということですか。
2)こんにちは、前者で「関数の Num インスタンスはありません」と言うとき、どういう意味ですか? 申し訳ありませんが、インスタンスの概念が何であるかが明確ではありません。さらに、好奇心から、インスタンス メソッドを使用して、インタプリタにとしてNum (a -> b)
解釈するように指示できますか?3 4
4 modulo 3