eval (App o l r) = [apply o x y | x <- eval l, 
                                  y <- eval r,
                                valid o x y]
eval (App o l r) = [apply o x y | x <- eval l, 
                                  y <- eval r,
                                valid o x y]
eval (App o l r) = [apply o x y | x <- eval l, 
                                  y <- eval r,
                                valid o x y]