« Premiers pas en OCaml/Fonctions » : différence entre les versions

Contenu supprimé Contenu ajouté
Watermy (discussion | contributions)
m ortho, syntaxe & co
Watermy (discussion | contributions)
m style
Ligne 119 :
</source>
 
{{Attention|Avec_fond = oui|1=Il est très important de comprendre ici le résultat de l'interpréteur.}} :
<source lang="ocaml">
Disséquons élément par élément :
val successeur : int -> int = <fun>
</source>
}}
Disséquons le élément par élément :
* '''val successeur :''' : 'Successeur' est ici le nom de la définition.
* '''int -> int''' : La fonction prend un entier en paramètre et donne un entier en résultat.
* '''= <fun>''' : La valeur de la définition est une fonction.
 
}}
 
== Fonctions à plusieurs paramètres ==
Ligne 134 ⟶ 138 :
</source>
 
{{Attention |Avec_fond = oui| Il est important de bien comprendre cele résultat '''de intla ->fonction intprécédente -> int'''. }}:
<source lang="ocaml">
Il faut savoir que pour le type des fonctions '''le parenthésage à droite est implicite'''. Pour plus de compréhension mettons des parenthèses à cette valeur.
[...] int -> int -> int [...]
'''(int -> (int -> int))''' . On a donc une fonction qui prend en paramètre un entier et qui rend une fonction prend en paramètre un entier et qui rend un entier.
</source>
}}
Il faut savoir que pour le type des fonctions '''le parenthésage à droite est implicite'''. Pour plus de compréhension mettons des parenthèses. àon cetteobtient valeur'''(int -> (int -> int))'''. On a donc une fonction qui prend en paramètre un entier et qui rend une fonction prend en paramètre un entier et qui rend un entier.
Imaginez que l'on passe à la fonction fxy qu'un seul paramètre : (2 -> (int -> int)) on récupère alors une fonction qui prend en entier en paramètre et retourne un entier en paramètre (int -> int).
<source lang="ocaml">
Ligne 146 ⟶ 153 :
Maintenant imaginez que l'on passe à la fonction fxy deux paramètres : (2 -> (5 -> int)) on récupère un entier.
<source lang="ocaml">
# ((fxy 2) 5);;
# (fxy 2) 5;;
# fxy 2 5;;
Ligne 158 ⟶ 165 :
<source lang="ocaml">
# fxy 2 3 + 5;;
 
- : int = 11
</source>
Ligne 165 ⟶ 173 :
<source lang="ocaml">
# ((fxy 2) 3) + 5;;
 
- : int = 11
</source>