made pretty printer use -> if possible
This commit is contained in:
parent
832bb7305f
commit
94709f5320
1 changed files with 12 additions and 1 deletions
13
app/Expr.hs
13
app/Expr.hs
|
|
@ -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) =
|
||||
"(∏" ++ genName k ++ " : " ++ helper k ty ++ " . " ++ helper (k + 1) 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 ---------------- -}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue