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

Contenu supprimé Contenu ajouté
Watermy (discussion | contributions)
m coquille
Watermy (discussion | contributions)
+ref +precision
Ligne 12 :
Vous verrez à plusieurs reprises dans les définitions les notations suivantes :
* '''<mot en français>''' : A remplacer par :
** '''<type>''' : A remplacer par un type d'OCaml tel que int, float, bool, char, string, unit, <fun>, ...
** '''<expression>''' : A remplacer par une expression tel que x + 1.
** '''<paramètre>''' : A remplacer par un nom de paramètre ou une valeur constante tel que x ou 1.
* '''|''' : A remplacer par l'un des éléments.
 
{{Exemple
|contenu=
<source lang="ocaml">
function | fun <paramètre> -> <expression>;;
 
(* peut donner *)
function x -> x;;
fun 1 -> 2;;
function bob -> true;;
(* ... *)
Ligne 45 ⟶ 43 :
|contenu=
<source lang="ocaml">
# function|fun <paramètre> -> <expression>;;
 
- : <type du paramètre> -> <type de l'expression> = <fun>
</source>
}}
Ligne 128 ⟶ 126 :
|contenu=
<source lang="ocaml">
# let <nom de la fonction> = function|fun <paramètre> -> <expression>;;
 
val <nom de la fonction> : <type du paramètre> -> <type de l'expression> = <fun>
Ligne 155 ⟶ 153 :
Une fonction à plusieurs paramètres peut être vu comme une suite de fonction à un paramètre.
<source lang="ocaml">
# let fxy = function x -> function y -> x * y;;
(* = *)
# let fxy = fun x y -> x * y;;
 
val fxy : int -> int -> int = <fun>
</source>
Le mot-clef '''fun''' permet de passé plusieurs paramètre a une fonction contrairement au mot-clef '''function'''.
 
{{Attention |Avec_fond = oui| Il est important de bien comprendre le résultat de la fonction précédente :
Ligne 201 ⟶ 202 :
Pire si vous mettiez
<source lang="ocaml">
# fxy 1 + 2 3;;
</source>
 
Ligne 207 ⟶ 208 :
 
<source lang="ocaml">
# (((fxy 1) + )2) 3;;
</source>
C'est pour cette raison qu'on a droit a une belle erreur de compilation.
Ligne 218 ⟶ 219 :
Pour corriger ce problème il faut mettre des parenthèses sur l'opération.
<source lang="ocaml">
# fxy (1 + 2) 3;;
 
- : int = 9
Ligne 314 ⟶ 315 :
</source>
 
== RéférenceRéférences ==
Toutes ces informations sont disponibles sur la documentation officielle :
* {{LienWeb|format=html|licence=copyright|langue=en|url=http://caml.inria.fr/pub/docs/manual-ocaml/expr.html#toc48|commentaire=Documentation sur les fonctions}}
* {{LienWeb|format=html|licence=copyright|langue=fr|url=http://caml.inria.fr/resources/doc/faq/core.fr.html#function | commentaire=FAQ sur les fonctions }}