diff --git a/.vscode/settings.json b/.vscode/settings.json index 5a11127..9a0bbf6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,6 +12,7 @@ "Stdlib", "struct", "utop", - "Vkashka" + "Vkashka", + "промис" ] } \ No newline at end of file diff --git a/docs/libraries/concurrency/lwt.md b/docs/libraries/concurrency/lwt.md index 7d9d665..1d310db 100644 --- a/docs/libraries/concurrency/lwt.md +++ b/docs/libraries/concurrency/lwt.md @@ -11,7 +11,7 @@ outline: deep Также активно используется в среде [MirageOS]. -## Пример +## Пример Пример Lwt-программы, которая запрашивает первую страницу Google и терпит неудачу, если запрос не завершен в течение пяти секунд: @@ -42,9 +42,13 @@ let () = (* ocamlfind opt -package lwt.unix -linkpkg example.ml && ./a.out *) ``` +> [!NOTE] Смотрите также +> - [Примеры по работе с TCP/IP](../../in-examples/tcp-ip.md#с-помощью-lwt) + + ## Ppx -Препроцессинг для `do`-подобного синтаксиса ([`ppx_lwt`](https://ocsigen.org/lwt/4.1.0/api/Ppx_lwt)): +Препроцессинг для do-подобного синтаксиса ([`ppx_lwt`](https://ocsigen.org/lwt/4.1.0/api/Ppx_lwt)). Настоятельно рекомендуется к использованию! ```ocaml let%lwt user = get_user_from_api "dad" in (* ... *) @@ -80,4 +84,18 @@ let _ = [MirageOS]: https://mirage.io/ [Ocsigen]: https://ocsigen.org/home/intro.html -[libev]: http://software.schmorp.de/pkg/libev.html \ No newline at end of file +[libev]: http://software.schmorp.de/pkg/libev.html + +## Трюки + +### Never-промис + +Тут мы создаем промис, который никогда не будет зарезолвен, а значит последовательность +не продолжится. + +```ocaml +let never = fst @@ Lwt.wait () +``` +```ocaml +let%lwt _ = never in (* ... *) +``` \ No newline at end of file