behavior explanation for higher order functions and labeled argument in OCaml
问题 Taking an exemple derived from RWOCaml : utop # let divide ~first ~second = first / second;; val divide : first:int -> second:int -> int = <fun> utop # let apply_to_tuple_3 f (first,second) = f second first;; val apply_to_tuple_3 : ('a -> 'b -> 'c) -> 'b * 'a -> 'c = <fun> utop # apply_to_tuple_3 divide;; Error: This expression has type first:int -> second:int -> int but an expression was expected of type 'a -> 'b -> 'c Does it make sense to not match the types here ? apply_to_tuple_3 only