
25 Apr
2013
25 Apr
'13
4:08 p.m.
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