let serve _ r w =
  let rec loop r w =
    Reader.read_sexp r >>= fun req ->
    (match req with
     | `Eof -> ()
     | `Ok req ->
         let req = Request.t_of_sexp req in
         Writer.write_sexp w (Response.sexp_of_t (eval req)));
    loop r w
  in

  loop r w