Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Pretty printing of type expresions
- class Pretty p where
- pprint :: (Applicative m, LFresh m) => p -> m Doc
- instance Pretty Poly where
- pprint (Poly p) =
- lunbind $
- \ (bindings, typeExpr) ->
- do
- vars <- pprintListSep (pure (PP.text ",")) bindings
- printedExpr <- pprint typeExpr
- pure $ PP.brackets a <+> PP.text "==>" <+> printedExpr
- pprintListSep :: forall m. (LFresh m, Pretty a) => m Doc -> [a] -> m Doc
- pprintListSep l sep = foldr PP.empty f l
- where
- f a b = do
- a' <- a
- sep' <- sep
- b' <- b
- pure $ a <+> sep <+> b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement