module Expr where 

data Exp = Var String | App Exp Exp | Lam String Exp
                        -- Lambda-Ausdrücke
           | S | K | I  -- Kombinatoren
           | M | N | P  -- Platzhalter für Ausdrücke
           deriving Eq

instance Show Exp where
   show (Var cs)    = cs
   show (App e1 e2) = '(' : show e1 ++ " " ++ show e2 ++ ")"
   show (Lam cs e)  = "(\\ " ++ cs ++ "." ++ show e
   show S           = "S"
   show K           = "K"
   show I           = "I"
   show M           = "M"
   show N           = "N"
   show P           = "P"