type ('a, 'b) or_ = | Inl of 'a | Inr of 'b;; let f1 x = match snd x with |Inl y -> Inl (fst x, y) | Inr z -> Inr (fst x, z);; let f2 x = match x with |Inl y -> (fst y, Inl (snd y)) |Inr z -> (fst z, Inr (snd z));;