shithub: MicroHs

ref: d668b5472b2c112a51c1a5f9e242e42543399a5b
dir: /tests/Newtype.hs/

View raw version
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)))