Является ли отправка Haskell TypeClass динамической?
Учитывая следующий снимок кода Haskell:
class Foo a where
bar :: a -> ...
quux :: a -> ...
...
Где значение a определяется во время выполнения - класс отправляет это значение.
Я предполагаю, что компилятор может статически проверять типы во время компиляции и гарантировать, что никакие недопустимые типы не могут отправлять на него.
Теперь, если мы сравним это с динамической отправкой в Java:
interface Flippable {
Flippable flip();
}
class Left implements Flippable {
Right flip();
}
class Right implements Flippable {
Left flip();
}
class Demo {
public static void main(String args[]) {
Flippable flippable = new Right();
System.out.println(flippable.flip);
}
}
Предположения:
Haskell может отправлять по типу возвращаемого значения, а также по нескольким аргументам, отличая отправку от других языков.Мой вопрос:Является ли отправка Haskell TypeClass динамической?