package ppx_defer

  1. Overview
  2. Docs
On This Page
  1. Using ppx_defer
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

ppx_defer

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.

The implementation is based purely on moving syntax around so ppx_defer is not as powerful or safe as Go's defer.

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
OCaml

Innovation. Community. Security.