let eval () query =
  let response =
    match query with
    | Request.Succ   i     -> Response.Int  (i + 1)
    | Request.Neg    i     -> Response.Int  (-i)
    | Request.Plus  (i, j) -> Response.Int  (i + j)
    | Request.Sub   (i, j) -> Response.Int  (i - j)
    | Request.Times (i, j) -> Response.Int  (i * j)
    | Request.Eq    (i, j) -> Response.Bool (i = j)
  in
  return response