Module Lwt.Infix
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt:DkSDKProject_DeclareAvailable(lwt CONSTRAINT "= 5.6.1" FINDLIBS lwt lwt.unix) DkSDKProject_MakeAvailable(lwt)Add the
Findlib::lwtlibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::lwt)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install lwt.5.6.1Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (lwt (>= 5.6.1))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "lwt" {>= "5.6.1"} ]Then run:
opam install . --deps-only
FINALLY, add the lwt library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
lwt))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
lwt))p >>= f is the same as Lwt.bind p f. It
requires Lwt.Infix to be opened in scope:
open Lwt.Infix
let () =
Lwt_main.run
(Lwt_io.(read_line stdin) >>= Lwt_io.printl)
(* ocamlfind opt -linkpkg -thread -package lwt.unix code.ml && ./a.out *)It is recommended to use the PPX let%lwt syntax instead. This operator
is the next-best choice. It is frequently found while reading existing
Lwt code.
p >|= f is the same as Lwt.map f p. It
requires Lwt.Infix to be opened in scope.
open Lwt.Infix
let () =
Lwt_main.run
(Lwt_io.(read_line stdin) >|= ignore)
(* ocamlfind opt -linkpkg -thread -package lwt.unix code.ml && ./a.out *)p1 p2 is the same as
Lwt.choose [p1; p2]. It requires Lwt.Infix
to be opened in scope.
Unlike with Lwt.bind and
Lwt.map, there are no problems with explicit
Lwt.choose syntax, so using this operator is
not recommended.
Furthermore, most users actually need Lwt.pick
instead of Lwt.choose.
f =<< p is the same as Lwt.bind p f. It
requires Lwt.Infix to be opened in scope.
This operator is obscure and its use is discouraged. It is the same as
p >>= f.
f =|< p is the same as Lwt.map f p. It
requires Lwt.Infix to be opened in scope.
This operator is obscure and its use is discouraged. It is the same as
p >|= f.
moduleLet_syntax:sig...end
This module provides support for ppx_let.
