On 3 August 2012 09:32, Jacques Garrigue wrote: > > Your assumption is wrong. A function never "requires" polymorphism from an > argument. > It may require a polymorphic method, but only if the type of this argument > is given explicitly. > Well, yes. I do not know what do you mean by saying "requiring polymorphism", but I do agree that my reasoning was wrong. Taking a simple example (without any classes): # let rec f x y = x y;; val f : ('a -> 'b) -> 'a -> 'b = I see, that function really requires as it's first argument any unary function. That is, from type scheme 'a -> 'b I can construct any type that contains one and only one arrow. And there is no subtype polymorphism involved here. Correct me if I'm wrong. The fact is that, at least in lablgtk-2.14.2 (the current version), the > type is > > expand_row : ?all:bool -> Gtk.tree_path -> unit > The first thing I've tried was specifying explicitly argument ~all. But compiler refused to accept this too, with exactly the same error message...