{-- | Pretty printers for lambda expression -}
module Language.Lambda.Pretty where
import Language.Lambda.AST

-- | Pretty prints a Expr
ppr :: Expr -> String
ppr (Var x)   = x
ppr (App x y) = "(" ++ ppr x ++ " " ++ ppr y ++ ")" 
ppr (Lam x y) = "(\\" ++ x ++ "." ++ ppr y ++ ")"

-- | Pretty prints a GExpr 
g_ppr :: (Show a) => GExpr a -> String
g_ppr (Var x)   = show x
g_ppr (App x y) = "(" ++ g_ppr x ++ " " ++ g_ppr y ++ ")" 
g_ppr (Lam x y) = "(\\" ++ show x ++ "." ++ g_ppr y ++ ")"