Haskell のエラー メッセージは、初心者のプログラマにとって混乱を招くため、理解しようとしています。私が見つけることができる最も簡単な例はこれです:
Prelude> 1 + True
<interactive>:2:3:
No instance for (Num Bool)
arising from a use of `+'
Possible fix: add an instance declaration for (Num Bool)
In the expression: 1 + True
In an equation for `it': it = 1 + True
パラメータの順序に関係なく、コンパイラが(Num Bool)を検索するのはなぜですか? 以下を定義した後に機能するのはなぜですか?
instance Num Bool where (+) a b = True;
[...]
Prelude> 1 + True
True
2 番目の引数が( Num Bool)の場合にのみ、(+)を(Num Bool)に適用できるようにするにはどうすればよいですか?