Skip to content

Module Format.Args

The Args module defines a heterogeneous list type, which can be used as the argument of printf-like functions.

It is not required to open this module when using the functions that accept an Args.t. Thanks to type-based disambiguation, the type is inferred automatically, so the list syntax [x; y; z] can be used directly for heterogeneous lists.

An example:

ocaml
  (* without opening Args *)
  Format.lprintf "%s %d %.02f@." [ "ocaml"; 42; 3.14 ]

  (* or with explicit construction *)
  let lst = let open Format.Args in "ocaml" :: [ 42; 3.14 ] @ [ 'c' ] in
  Format.lprintf "%s %d %.02f %c@." lst

since 5.5

ocaml
type ('a, 'r) t = 
  | [] : ('r, 'r) t
  | :: : 'a * ('b, 'r) t -> ('a -> 'b, 'r) t
reasonml
type t('a, 'r) = 
  | [] : t('r, 'r)
  | ::('a, t('b, 'r)) : t('a => 'b, 'r)
;
ocaml
val apply : 'a -> ('a, 'r) t -> 'r
reasonml
let apply: 'a => t('a, 'r) => 'r;
ocaml
val (@) : ('a, 'r1) t -> ('r1, 'r2) t -> ('a, 'r2) t
reasonml
let (@): t('a, 'r1) => t('r1, 'r2) => t('a, 'r2);