Dear OCamlers, I try to define a polymorphic container encapsulating a list. I'd like to define a map and a fold method. I have read in the documentation how to specify a polymorphic fold method but I'm unable to transpose for the map method. I include in the code below a tentative: the map1 method is not polymorphic. If I uncomment the map2 method, I have the error This type scheme cannot quantify 'c : it escapes this scope. Do you have any idea how to solve this problem? And aditionnaly, could you explain me why it works for fold and not for map? All the best, Jean ****************************************************************************************************** class ['elt] container arg = object val _repr = arg method fold : 'b. ('b -> 'elt -> 'b) -> 'b -> 'b = fun f accu -> List.fold_left f accu _repr method map1 f = {< _repr = List.map f _repr >} (* method map2 : 'c.('elt -> 'c) -> ('c container) = function f -> new container (List.map f _repr) *) end let l = new container [1;2;3] let fint = l#fold (fun acc x -> x + acc) 0 and fstring = l#fold (fun acc x -> (string_of_int x)^acc) "empty" let mint = l#map1 (function x -> 0) let mstring = l#map1 (function x -> "zero")