Types et polymorphisme (let et fun)
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:
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:
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:
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 :cry:
Tu dois utiliser 2 fois la même fonction avec des types différents
Code:
1 2 3 4 5
|
# let func a = true,a
and applicator f g x y = f x, g y;;
# applicator func func 2 1.0;; |
Ou bien te compliquer la vie avec du Higher-Rank Polymorphism :aie: