@@ -41,8 +41,11 @@ instance Pretty Type where
4141 | Help.isTuple name -> P.parens . P.sep . P.punctuate P.comma $ map pretty tipes
4242 | otherwise -> P.hang (P.text name) 2 (P.sep $ map prettyParens tipes)
4343 EmptyRecord -> P.braces P.empty
44− Record fields ext -> P.braces $ P.hang (pretty ext <+> P.text "|") 4 prettyFields
44+ Record _ _ -> P.braces $ case ext of
45+ EmptyRecord -> prettyFields
46+ _ -> P.hang (pretty ext <+> P.text "|") 4 prettyFields
4547 where
48+ (fields, ext) = collectRecords tipe
4649 prettyField (f,t) = P.text f <+> P.text ":" <+> pretty t
4750 prettyFields = commaSep . map prettyField $ fields
4851
@@ -52,6 +55,13 @@ collectLambdas tipe =
5255 Lambda arg body -> pretty arg : collectLambdas body
5356 _ -> [pretty tipe]
5457
58+collectRecords = go []
59+ where
60+ go fields tipe =
61+ case tipe of
62+ Record fs ext -> go (fs ++ fields) ext
63+ _ -> (fields, tipe)
64+
5565prettyParens tipe = parensIf needed (pretty tipe)
5666 where
5767 needed =