Bonjour à tous,
Je m'attaque à la compréhension de la gestion des types en Caml et voici quelque chose que je ne m'explique pas, peut-être pourrez-vous m'aider à comprendre :

[EDIT]
J'essaie d'obtenir une fonction du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
f : ('a -> 'b) -> 'a1 -> 'a2 -> 'b1 * 'b2 = <fun>
[/EDIT]

A priori, je pensais qu'il fallait utiliser un let :

Ici ca marche, j'utilise un let, id a été déclarée au préalable :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
#let fonc' = fun x -> (id x) in fun x y -> (fonc' x, fonc' y);;
- : 'a -> 'b -> 'a * 'b = <fun>
Ici, ca ne marche pas, pourtant j'utilise la même structure au sein de la fonction....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
#let f id = let fonc' = fun x -> (id x) in fun x y -> (fonc' x, fonc' y);;
f : ('a -> 'b) -> 'a -> 'a -> 'b * 'b = <fun>
Merci d'avance