format(term, String.t, String.t, (... -> any)) :: Macro.t
parse(term, String.t, (... -> any)) :: Macro.t
pattern(term, String.t, String.t) :: Macro.t