next up previous contents index
Next: Fonctionnelles Up: Quelques éléments de Caml Previous: Appel au compilateur

Fonctions

On utilise la notation $A \rightarrow B$ pour dénoter les fonctions de l'ensemble A dans l'ensemble B et par exemple int -> int est le type de la fonction fact ci-dessus. La valeur d'une fonction est une valeur fonctionnelle, notée conventionnellement <fun>. Remarquons à nouveau que toute définition lie un identificateur à une valeur; ainsi fact possède une valeur et il s'évalue normalement:

#fact;;
- : int -> int = <fun>

À l'occasion de la définition de fact, on observe aussi que les fonctions récursives doivent être introduites par le mot-clé   let rec, pour signaler au système qu'on fait référence à leur nom avant leur définition effective.

Les fonctions récursives doivent être introduites par le mot-clé let rec.

Pour terminer sur les fonctions, citons l'existence des fonctions anonymes, c'est-à-dire des valeurs fonctionnelles qui n'ont pas de nom. On les introduit avec le nouveau mot clé function et la construction function x -> ... Par exemple:

#(function x -> x + 1);;
- : int -> int = <fun>
#(function x -> x + 1) 2;;
- : int = 3

Lorsqu'on donne un nom à une fonction anonyme, on définit alors très logiquement une fonction ``normale'':

#let successeur = (function x -> x + 1);;
successeur : int -> int = <fun>
#successeur 2;;
- : int = 3

On utilise la plupart du temps les fonctions anonymes en argument des fonctionnelles que nous décrivons maintenant.



1/11/1998