Bonjour,
alors que je m'amusais dans le top-level d'Ocaml, une étrange surprise m'a ... bref, surpris :
Comment se fait-il que la fonction stupid_function voit son type défini par sa première utilisation ? Je suppose que ce comportement explique le format de son type premier (les '_a).
Code Ocaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 let comp f g = fun x -> f (g x) ;; -- val comp : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b = <fun> let stupid_function = comp comp comp ;; -- val stupid_function : ('_a -> '_b) -> ('_c -> '_d -> '_a) -> '_c -> '_d -> '_b = <fun> let test = stupid_function (fun n -> [n]) (fun n s -> n*(String.length s));; -- val test : int -> string -> int list = <fun> stupid_function ;; - : (int -> int list) -> (int -> string -> int) -> int -> string -> int list = <fun>
Merci pour vos explications. Et la série britanique Sherlock est très bonne en passant.
Partager