Sourceval string : 'a -> [> `String of 'a ] Sourceval int : 'a -> [> `Int of 'a ] Sourceval bool : 'a -> [> `Bool of 'a ] Sourceval option : ('a -> [> `Null ] as 'b) -> 'a option -> 'b Sourceval list : ('a -> 'b) -> 'a list -> [> `List of 'b list ]