type storage = int type param = Add of int | Sub of int let main (p: param) storage = let storage = storage + (match p with Add n -> n | Sub n -> 0-n) in ([] : operation list), storage let match_bool (b: bool) : int = match b with true -> 10 | false -> 0 let match_list (l: int list) : int = match l with hd :: tl -> hd | [] -> 10 let match_option (i: int option) : int = match i with Some n -> n | None -> 0