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