Конечная цепочка отложенных вычислений с нормальным значением - PullRequest
1 голос
/ 15 апреля 2020

Я хочу, чтобы приведенная ниже функция взяла url и вернула узел супа, используя lambdasoup, другими словами, я хочу, чтобы тип был: val do_get : string -> soup node = <fun>. С оператором связывания (>>=) я могу ждать вычисления до конца sh, но это всегда возвращает другое отложенное вычисление. Я хотел бы иметь возможность завершить цепочку, превратив отложенное вычисление в нормальное значение. Что я могу сделать?

let do_get url = 
  let uri = Uri.of_string url in
  Cohttp_async.Client.get uri
  >>= fun (_, body) -> 
    Cohttp_async.Body.to_string body
  >>= fun s -> parse s

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете использовать от Deferred.peek до go от отложенного значения до нормального значения. И в начале, если ваша программа должна вызывать Scheduler.go, вероятно, так: never_returns (Scheduler.go ()).

В реальной жизни есть глава ocaml, в которой объясняется, как использовать библиотеку asyn c . https://dev.realworldocaml.org/concurrent-programming.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...