eval (UnaryOp op r) = 
  eval r >>= \v -> return (evalUnaryOp op $ v)
eval (UnaryOp op r) = 
  eval r >>= \v -> return (evalUnaryOp op $ v)
eval (UnaryOp op r) = 
  eval r >>= \v -> return (evalUnaryOp op $ v)