ppx_defer

AuthorHezekiah M. Carty <hez@0ok.org>
LicenseMIT
Homepagehttps://github.com/hcarty/ppx_defer
Issue Trackerhttps://github.com/hcarty/ppx_defer/issues
MaintainerHezekiah M. Carty <hez@0ok.org>
Dependencies
&jbuilder>= 1.0+beta9
ocaml-migrate-parsetree
ppx_tools_versioned
Availableocaml-version >= "4.02.3"
PublishedMay 29, 2017
Source [http] https://github.com/hcarty/ppx_defer/releases/download/v0.3.0/ppx_defer-0.3.0.tbz
ce43604abdf98806c2321481ecf6e75b
StatisticsInstalled 3 times last month.
Edithttps://github.com/ocaml/opam-repository/tree/master/packages/ppx_defer/ppx_defer.0.3.0/opam

Go-like `[%defer later]; now` syntax.

This is an OCaml language extension implementing a somewhat Go-ish [%defer expr1]; expr2 which will defer the evaluation of expr1 until after expr2. expr1 will still be evaluated if expr2 raises an exception.

If you are using Lwt you can use [%defer.lwt expr1]; expr2.

Thanks to Drup for guidance in figuring out ppx details!

Using ppx_defer

let () =
  let ic = open_in_bin "some_file" in
  [%defer close_in ic];
  let length = in_channel_length ic in
  let bytes = really_input_string ic length in
  print_endline bytes

See the examples/ directory for more examples.

No package is dependent