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

Contenu supprimé Contenu ajouté
Watermy (discussion | contributions)
création de la page 1ère partie
 
Watermy (discussion | contributions)
+ 2ème partie page
Ligne 8 :
 
== Les fonctions ==
=== Qu'est-ce qu'une fonctionsfonction ? ===
Les fonctions (ou abstractions) sont défini par la syntaxe suivante :
 
Ligne 23 :
 
On peut par exemple créer une fonction qui prend un entier en paramètre et renvoi son successeur.
{{Exemple
|contenu=Fonction successeur
<source lang="ocaml">
# function x -> x + 1;;
Ligne 30 ⟶ 28 :
- : int -> int = <fun>
</source>
}}
 
Voyons maintenant comment l'utilisé.
{{Exemple
|contenu=Fonction successeur
<source lang="ocaml">
# (function x -> x + 1) 10;;
Ligne 40 ⟶ 35 :
- : int = 11
</source>
 
}}
 
== Définition ==
Ligne 57 ⟶ 52 :
}}
 
On peut aussi effectuer une définition local avec le mot-clef '''in''':
=== Exemple d'utilisation ===
{{Définition
Pour l'utiliser :
| titre=Définition locale
{{Exemple
|contenu=
<source lang="ocaml">
let <identificateur> = <expression> in -> <expression utilisant identificateur>;;
</source>
}}
Les définitions locales sont utiles pour factorisées des calcules.
 
=== Exemple d'utilisation des définitions ===
Pour l'utiliser :
<source lang="ocaml">
# let nombre = 10;;
Ligne 66 ⟶ 69 :
val nombre : int = 10
</source>
 
}}
On peut ensuite appelé notre nouvel identificateur pour récupérer sa valeur.
{{Exemple
|contenu=
<source lang="ocaml">
# nombre;;
Ligne 75 ⟶ 76 :
val nombre : int = 10
</source>
 
}}
=== Exemple d'utilisation des définitions locales ===
 
Si nous voulons effectuer le calcul suivant : <math>2*3*4 + 2*3</math>
Ici 2*3 est calculé 2 fois. Nous pouvons résoudre ce problème en utilisant les définitions locales.
<source lang="ocaml">
# let tmp = 2*3 in tmp * 4 + tmp;;
- : int = 30
 
(* La définition est temporaire. *)
# tmp;;
Error: Unbound value tmp
</source>
 
== Définition et fonctions ==