deriving
geht nur für vordefinierte Klassen.
für nutzerdefinierte Klassen müßte der Nutzer gewünschte Ableitungsregeln selbst angeben.
das heißt dann polytypic programming, http://www.cs.chalmers.se/~patrikj/poly/
unterstützt z. B. durch Präprozessor DrIFT
oder (wegen typischer Nachteile von Präprozessoren) durch Sprach/Compiler-Erweiterungen: http://www.cs.uu.nl/research/projects/generic-haskell/