data Typ = TInt | TInteger | TUnk deriving Show data ExprNum = ExprNum Typ Integer deriving Show data TExprNum a = TExprNum a {- f (ExprNum TInt x) = TExprNum (fromInteger x) :: TExprNum Int f (ExprNum TInteger x) = TExprNum (fromInteger x) :: TExprNum Integer f _ = error "nope" -} main = do let e1 = ExprNum TInt 25 let e2 = ExprNum TInteger 6 print $ e1 print $ e2 {- let t1 = f e1 let t2 = f e2 print $ t1 print $ t2 -}