made pretty printer use -> if possible

This commit is contained in:
William Ball 2024-11-11 13:43:28 -08:00
parent 832bb7305f
commit 94709f5320

View file

@ -14,6 +14,14 @@ data Expr where
Pi :: Expr -> Expr -> Expr
deriving (Show, Eq)
occursFree :: Integer -> Expr -> Bool
occursFree n (Var k) = n == k
occursFree _ Star = False
occursFree _ Square = False
occursFree n (App a b) = occursFree n a || occursFree n b
occursFree n (Abs a b) = occursFree n a || occursFree (n + 1) b
occursFree n (Pi a b) = occursFree n a || occursFree (n + 1) b
{- --------------------- PRETTY PRINTING ----------------------------- -}
-- TODO : store parsed identifiers for better printing
@ -33,7 +41,10 @@ pretty = helper 0
helper k (Abs ty b) =
"" ++ genName k ++ " : " ++ helper k ty ++ " . " ++ helper (k + 1) b ++ ")"
helper k (Pi ty b) =
if occursFree 0 b
then
"(∏" ++ genName k ++ " : " ++ helper k ty ++ " . " ++ helper (k + 1) b ++ ")"
else "(" ++ helper k ty ++ " -> " ++ helper (k + 1) b ++ ")"
{- --------------- ACTUAL MATH STUFF ---------------- -}