improved printing

This commit is contained in:
2024-07-17 22:13:11 -07:00
parent 5bc9b4a9d9
commit f0d0743ccb
4 changed files with 55 additions and 29 deletions

View File

@@ -52,7 +52,7 @@ data Tm : Type where
%name Tm t, u, v
public export
-- public export
Show Tm where
show (Bnd k) = "(Bnd \{show k})"
show (Ref str _) = "(Ref \{show str})"
@@ -84,6 +84,23 @@ Eq (Tm) where
(Pi n icit t u) == (Pi n' icit' t' u') = icit == icit' && t == t' && u == u'
_ == _ = False
export
pprint : List String -> Tm -> String
pprint names tm = render 80 $ go names tm
where
go : List String -> Tm -> Doc
go names (Bnd k) = case getAt k names of
Nothing => text "BND \{show k}"
Just nm => text "\{nm}:\{show k}"
go names (Ref str mt) = text str
go names (Meta k) = text "?m:\{show k}"
go names (Lam nm t) = text "(\\ \{nm} =>" <+> go (nm :: names) t <+> ")"
go names (App t u) = text "(" <+> go names t <+> go names u <+> ")"
go names U = "U"
go names (Pi nm icit t u) =
text "(" <+> text nm <+> ":" <+> go names t <+> ")" <+> "=>" <+> go (nm :: names) u <+> ")"
public export
Pretty Tm where
pretty (Bnd k) = ?rhs_0
@@ -92,7 +109,7 @@ Pretty Tm where
pretty (Lam str t) = text "(\\ \{str} => " <+> pretty t <+> ")"
pretty (App t u) = text "(" <+> pretty t <+> pretty u <+> ")"
pretty U = "U"
pretty (Pi str icit t u) = text "(" <+> text str <+> ":" <+> pretty t <+> "=>" <+> pretty u <+> ")"
pretty (Pi str icit t u) = text "(" <+> text str <+> ":" <+> pretty t <+> ")" <+> "=>" <+> pretty u <+> ")"
-- public export
-- data Closure : Nat -> Type
@@ -250,6 +267,10 @@ record Context where
metas : IORef MetaContext
export
names : Context -> List String
names ctx = toList $ map fst ctx.types
public export
M : Type -> Type
M = (StateT TopContext (EitherT Impl.Error IO))