O envio de um Haskell TypeClass é dinâmico?
Dado o seguinte instantâneo de código Haskell:
class Foo a where
bar :: a -> ...
quux :: a -> ...
...
Onde o valor de a é determinado em tempo de execução - a classe despacha esse valor.
Estou assumindo que o compilador possa verificar estaticamente os tipos em tempo de compilação e garantir que nenhum tipo inválido possa despachar nele.
Agora, se compararmos isso com um despacho dinâmico em 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);
}
}
Premissas:
Haskell pode despachar no tipo de retorno, bem como vários argumentos, tornando o despacho diferente para outros idiomas.Minha pergunta é:O envio de um Haskell TypeClass é dinâmico?