binary op = P.Infix e P.AssocLeft where
  e = do { o <- symbol op; return (\x y -> EAp (EAp (EVar o) x) y) }

--prefix op = Prefix (do { reservedOp op; return fun })
binary op = P.Infix e P.AssocLeft where
  e = do { o <- symbol op; return (\x y -> EAp (EAp (EVar o) x) y) }

--prefix op = Prefix (do { reservedOp op; return fun })
binary op = P.Infix e P.AssocLeft where
  e = do { o <- symbol op; return (\x y -> EAp (EAp (EVar o) x) y) }

--prefix op = Prefix (do { reservedOp op; return fun })