Ist der Versand einer dynamischen Haskell TypeClass?

Gab den folgenden Haskell-Code-Schnappschuss:

class Foo a where
   bar  :: a -> ...
   quux :: a -> ...
   ...

Wo zur Laufzeit der Wert von a ermittelt wird - die Klasse löst diesen Wert aus.

Ich gehe davon aus, dass der Compiler die Typen zur Kompilierungszeit statisch überprüfen kann und sicherstellen kann, dass keine ungültigen Typen darauf gesendet werden können.

Nun, wenn wir dies mit einem dynamischen Versand in Java vergleichen:

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);
  }
}

Annahmen

Haskell kann sowohl bei Rückgabe als auch mit mehreren Argumenten einen Versand in andere Sprachen ausführen.

Meine Frage ist:Ist der Versand einer dynamischen Haskell TypeClass?