step (App e1 e2)      = case step e1 of
                          Left e1' -> Left (App e1' e2)
                          Right (LamVal body) -> Left (subst e2 body)
step (App e1 e2)      = case step e1 of
                          Left e1' -> Left (App e1' e2)
                          Right (LamVal body) -> Left (subst e2 body)
step (App e1 e2)      = case step e1 of
                          Left e1' -> Left (App e1' e2)
                          Right (LamVal body) -> Left (subst e2 body)