-ptdef (Newtype tcon tbinds (coercion,k) rep) =
--- Here we take apart the newtype tycon in order to get the newtype coercion,
--- which needs to be represented in the External Core file because it's not
--- straightforward to derive its definition from the newtype declaration alone.
--- At the same time, we need the newtype decl to declare the tycon itself.
--- Sigh.
- text "%newtype" <+> pqname tcon <+> (hsep (map ptbind tbinds))
- <+> axiomclause <+> repclause
- where axiomclause = char '^' <+> parens (pqname coercion <+> text "::"
- <+> pkind k)
- repclause = case rep of
- Just ty -> char '=' <+> pty ty
- Nothing -> empty
-
+ptdef (Newtype tcon coercion tbinds rep) =
+ text "%newtype" <+> pqname tcon <+> pqname coercion
+ <+> (hsep (map ptbind tbinds)) $$ indent repclause
+ where repclause = char '=' <+> pty rep