@@ -68,19 +68,18 @@ parens = ("("++) . (++")")
69instance Show Type where
69instance Show Type where
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)
72 in case t of
73 in case t of
73− LambdaT t1@(LambdaT _ _) t2 -> show' t1 ++ " -> " ++ show t2
74+ LambdaT t1@(LambdaT _ _) t2 -> parens (show t1) ++ " -> " ++ show t2
74 LambdaT t1 t2 -> show t1 ++ " -> " ++ show t2
75 LambdaT t1 t2 -> show t1 ++ " -> " ++ show t2
75 VarT x -> 't' : show x
76 VarT x -> 't' : show x
76− --ADT "List" [ADT "Char" []] -> "String"
77+ ADT "List" [ADT "Char" []] -> "String"
77 ADT "List" [tipe] -> "[" ++ show tipe ++ "]"
78 ADT "List" [tipe] -> "[" ++ show tipe ++ "]"
78 ADT name cs ->
79 ADT name cs ->
79 if isTupleString name
80 if isTupleString name
80 then parens . intercalate "," $ map show cs
81 then parens . intercalate "," $ map show cs
81− else case cs of
82+ else name ++ concatMap ((' ':) . addParens . show) cs
83− _ -> name ++ " " ++ unwords (map show cs)
84 Super ts -> "{" ++ (intercalate "," . map show $ Set.toList ts) ++ "}"
83 Super ts -> "{" ++ (intercalate "," . map show $ Set.toList ts) ++ "}"
85 EmptyRecord -> "{}"
84 EmptyRecord -> "{}"
86 RecordT fs t ->
85 RecordT fs t ->