と入力すると、「2」が表示されます。しかし、問題は、show 2
showが満たすものshow :: Show a => a -> String
であり、2
多形性であるということです。show 2::Int
show 2::Integer
show 2::Int
show 2::Integer
show 2
(A a)=>show a
コンパイラが、Aの現在のすべてのインスタンスがShowであり、同じ結果をもたらすshow a::X
場合(A a)=>show a
、指定する必要がなく、Aの現在のすべてのインスタンスがShowである場合、異なる結果をもたらす場合を知るのに十分なインテリジェントであると仮定することを拒否します。を指定する必要がありますshow a::X
。