Ich habe einen Containertyp, genannt X
. Da ich heterogene Listen über X
möchte, wird sein Konstruktor existentiell über eine Typvariable a
geschrieben. Ich möchte jedoch, dass es eine Instanz der Eq
Typklasse ist. Eine haschische Lösung sieht so aus:GADTs, nichtparametrisierte Typen und Instanz Eq für sie
{-# LANGUAGE GADTs #-}
data X where X :: (Eq a, Show a) => a -> X
instance Eq X where
X x == X y = show x == show y
Was wäre die einfachste (saubere) Lösung für dieses Problem?
(X
s nicht gleich, wenn sie die gleiche Art nicht haben.)