At Thu, 25 Apr 2013 19:08:17 +0100, Francesco Mazzoli wrote: > Would you expect this to work? > > > newtype DInt a = DInt a > > newtype DBool a = DBool a > > > > type family D a > > type instance D Int = DInt Int > > type instance D Bool = DBool Bool > > > > a :: D a -> a > > a (DInt x) = x > > a (DBool x) = x
Or even better: > data family D a > data instance D Int = DInt1 Int | DInt2 Int > data instance D Bool = DBool Bool > > a :: D a -> a > a (DInt1 x) = x > a (DInt2 x) = x > a (DBool x) = x Francesco _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe