either.ml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16type ('a, 'b) t = | Left of 'a | Right of 'b let map t ~l ~r = match t with | Left x -> l x | Right x -> r x let left x = Left x let right x = Right x let to_dyn f g = function | Left a -> f a | Right b -> g b