Hi, why does the f type correctly while g fails to type? Christopher type 'a t = | A : unit t let f = fun (type a) ~(p :a t option) () -> match p with | Some A -> () | None -> () let g = fun (type a) ~(p :a t option) () -> match p with | Some A (* TYPING ERROR HERE *) | None -> () Error: This pattern matches values of type unit t but a pattern was expected which matches values of type a t Type unit is not compatible with type a -- http://gmerlin.de OpenPGP: http://gmerlin.de/christopher.pub CB07 DA40 B0B6 571D 35E2 0DEF 87E2 92A7 13E5 DEE1