Module Ast.Arg

type 'a t =
  1. | Return : 'a -> 'a t
  2. | Map : {
    1. x : 'a t;
    2. f : 'a -> 'b;
    } -> 'b t
  3. | Both : 'a t * 'b t -> ('a * 'b) t
  4. | Apply : {
    1. f : ('a -> 'b) t;
    2. x : 'a t;
    } -> 'b t
  5. | Flag : {
    1. names : string Nonempty_list.t;
    2. doc : string;
    } -> bool t
  6. | Flag_count : {
    1. names : string Nonempty_list.t;
    2. doc : string;
    } -> int t
  7. | Named : {
    1. names : string Nonempty_list.t;
    2. param : 'a Param.t;
    3. docv : string option;
    4. doc : string;
    } -> 'a t
  8. | Named_multi : {
    1. names : string Nonempty_list.t;
    2. param : 'a Param.t;
    3. docv : string option;
    4. doc : string;
    } -> 'a list t
  9. | Named_opt : {
    1. names : string Nonempty_list.t;
    2. param : 'a Param.t;
    3. docv : string option;
    4. doc : string;
    } -> 'a option t
  10. | Named_with_default : {
    1. names : string Nonempty_list.t;
    2. param : 'a Param.t;
    3. default : 'a;
    4. docv : string option;
    5. doc : string;
    } -> 'a t
  11. | Pos : {
    1. pos : int;
    2. param : 'a Param.t;
    3. docv : string option;
    4. doc : string;
    } -> 'a t
  12. | Pos_opt : {
    1. pos : int;
    2. param : 'a Param.t;
    3. docv : string option;
    4. doc : string;
    } -> 'a option t
  13. | Pos_with_default : {
    1. pos : int;
    2. param : 'a Param.t;
    3. default : 'a;
    4. docv : string option;
    5. doc : string;
    } -> 'a t
  14. | Pos_all : {
    1. param : 'a Param.t;
    2. docv : string option;
    3. doc : string;
    } -> 'a list t