ref: 4f1698b76ead47ff4e5c92ea19767ddd6e8ff133
dir: /tests/Newtype.hs/
module Newtype(main) where import Prelude newtype N = N Int newtype M a = M a f :: N -> Int f (N x) = x g :: M (Int, Int) -> M Int g (M (x, y)) = M x showM :: forall a . (a -> String) -> M a -> String showM sh (M x) = "(M " ++ sh x ++ ")" main :: IO () main = do putStrLn $ show [f (N 1), f (N 2)] putStrLn $ showM show (g (M (3,4)))