Skip to content

Instantly share code, notes, and snippets.

@jaked
Forked from avsm/gist:166441
Created August 12, 2009 16:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jaked/166609 to your computer and use it in GitHub Desktop.
Save jaked/166609 to your computer and use it in GitHub Desktop.
(* defines the Ast.binding for a function of form:
let fun_name ?(opt_arg1) ?(opt_arg2) final_ident = function_body ...
*)
let function_with_label_args _loc ~fun_name ~final_ident ~function_body ~return_type opt_args =
let opt_args = opt_args @ [ <:patt< $lid:final_ident$ >> ] in
let rec fn _loc = function (* could lose _loc and use List.fold_right *)
|hd::tl -> <:expr< function $hd$ -> $fn _loc tl$ >>
|[] -> <:expr< ( $function_body$ : $return_type$ ) >>
in
<:binding< $lid:fun_name$ = $fn _loc opt_args$ >>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment