module Documented_match_statement: Documented_match_statementtype ('input, 'output) case = {|    | pattern : | 
|    | documentation : | 
|    | value : | 
type ('input, 'output) t = {|    | specific_cases : | 
|    | catchall_case : | 
val map : ('input, 'output1) t ->
       f:('output1 -> 'output2) -> ('input, 'output2) tval map_cases : ('input, unit -> 'output1) case list ->
       f:('output1 -> 'output2) ->
       ('input, unit -> 'output2) case listval map_pattern : ('input1, 'output) t ->
       f1:('input1 -> 'input2) ->
       f2:('input2 -> 'input1) -> ('input2, 'output) tval prepend : specific_cases:('input, unit -> 'output) case list ->
       ('input, 'output) t ->
       ('input, 'output) tprepend ~specific_cases t matches on specific_cases before moving on to t.
A common situation is representing let f t x = match x with | `A -> ... | `B -> ... | _ ->
    which can be done by combining prepend and map:
    let f' =
    prepend ~specific_cases:{pattern = `A;...};{pattern = `B;...}
    (map g' ~f:(fun h t -> ))
val match_ : ('input, 'output) t -> 'input -> 'outputmatch_ t pulls out the underlying function of tval documentation : ('input, 'output) t ->
       input_to_string:('input -> string) -> title:string -> string list