Env is necessary, because evaluation might change the state of the environment, so we'll need to return the modified environment to the caller. You can treat `Result` as a monad wrapping interpreter values.