On va maintenant s'intéresser aux fonctions qui retournent (ou renvoient) une valeur. Le robot associé va donc prendre en argument un certain nombre de valeurs, faire des choses avec, et à la fin déposer une valeur de retour.
Le schéma d'une fonction qui retourne une valeur est le suivant :
let (...nom de la fonction...) (...noms des paramètres...) = (...actions réalisées par la fonction...) (...valeur de retour...) in
La seule différence par rapport aux fonctions qui ne retournent rien est l'ajout d'une valeur sur la dernière ligne juste avant le in
.
Certaines fonctions sont simples : elles ne réalisent pas d'actions et se contentent simplement de retourner une valeur calculée à partir des paramètres. On va traiter celles-ci d'abord, on s'occupera des autres ensuite.
Écrivons une fonction qui calcule la moyenne de deux réels. La fonction moyenne
prend deux arguments réels a
et b
, et retourne la moyenne de ces deux nombres qui vaut (a +. b) /. 2.0
.
let moyenne a b = (a +. b) /. 2.0 in
Maintenant, lorsqu'on écrit quelque part moyenne x y
, on appelle le robot moyenne
qui va lire x
et y
et déposer la valeur de la moyenne des deux nombres. On peut ensuite faire ce qu'on veut du résultat. Voyons un exemple concret. On peut remplacer le code suivant :
let t = (5.3 +. 3.2) /. 2.0 in print_float t; print_float( (6.3 +. 7.2) /. 2.0 );par :
let t = moyenne 5.3 3.2 in print_float t; print_float (moyenne 6.3 7.2);
qui est un code qui s'écrit plus facilement.
Voici le programme en entier, avec la définition de la fonction et son utilisation :
let moyenne a b = (a +. b) /. 2.0 in let t = moyenne 5.3 3.2 in print_float t; print_float (moyenne 6.3 7.2);