Next: Fonctionnelles
Up: Quelques éléments de Caml
Previous: Appel au compilateur
On utilise la notation 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.