¿El envío de un Haskell TypeClass es dinámico?
Dada la siguiente instantánea de código de Haskell:
class Foo a where
bar :: a -> ...
quux :: a -> ...
...
Cuando el valor de a se determina en tiempo de ejecución, la clase se distribuye en este valor.
Supongo que el compilador puede verificar estáticamente los tipos en tiempo de compilación y asegurarse de que no se puedan enviar tipos no válidos.
Ahora, si comparamos esto con un despacho dinámico en 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);
}
}
Suposiciones
Haskell puede enviar el tipo de retorno, así como múltiples argumentos que hacen que el envío sea diferente a otros idiomas.Mi pregunta es:¿El envío de un Haskell TypeClass es dinámico?