data SKI = S | K | I | App SKI SKI | Var String deriving (Show, Eq)eval (App I x) = eval xeval (App (App K x) y) = eval xeval (App (App (App S x) y) z) = eval (App (App x z) (App y z))eval (App x y) =if (App x y) == app thenappelseeval appwhereapp = App (eval x) (eval y)eval x = xmain = doprint $ eval $ App I $ Var "x"print $ eval $ App (App K $ App I $ Var "x") $ Var "y"print $ eval $ App (App (App S I) I) $ Var "x"print $ eval $ App (App I I) (Var "x")