>>636

たぶん、
class Animal a where
call :: a -> String

instance Animal Dog where
...

instance Animal Sparrow where
...

として
func :: Animal a => [a] -> String
とした場合、
func :: [Dog] -> String
func :: [Sparrow] -> String
という2つの関数が作られるといった感じの理解のほうが近いように思う。
そして動的に関数を選択するのではなくコンパイル時には
すでに使用される関数は決定しているのだと思う。

クラスの意味としては、
Animalクラスのインスタンスならば、関数callを持っているということが保証される
という感じか。