@@ -68,19 +68,18 @@ parens = ("("++) . (++")")
6868
6969instance Show Type where
7070 show t =
71− let show' t = case t of { LambdaT _ _ -> parens (show t) ; _ -> show t }
71+ let addParens (c:cs) =
72+ if notElem ' ' cs || c == '(' then c:cs else parens (c:cs)
7273 in case t of
73− LambdaT t1@(LambdaT _ _) t2 -> show' t1 ++ " -> " ++ show t2
74+ LambdaT t1@(LambdaT _ _) t2 -> parens (show t1) ++ " -> " ++ show t2
7475 LambdaT t1 t2 -> show t1 ++ " -> " ++ show t2
7576 VarT x -> 't' : show x
76− --ADT "List" [ADT "Char" []] -> "String"
77+ ADT "List" [ADT "Char" []] -> "String"
7778 ADT "List" [tipe] -> "[" ++ show tipe ++ "]"
7879 ADT name cs ->
7980 if isTupleString name
8081 then parens . intercalate "," $ map show cs
81− else case cs of
82− [] -> name
83− _ -> name ++ " " ++ unwords (map show cs)
82+ else name ++ concatMap ((' ':) . addParens . show) cs
8483 Super ts -> "{" ++ (intercalate "," . map show $ Set.toList ts) ++ "}"
8584 EmptyRecord -> "{}"
8685 RecordT fs t ->