Logo de kxs.frFiches pour l'informatique

Fonctions

Déclaration

Une fonction se déclare avec le mot-clé fun :

# fun x -> x * x;;
- : int -> int = <fun>

pour nommer une fonction, on utilise une variable :

# let f = fun x -> x * x;;
val f : int -> int = <fun>

Une notation plus courte :

# let f x = x * x;;
val f : int -> int = <fun>

Il est possible de mettre des parenthèses :

# let f (x) = x * x;;
val f : int -> int = <fun>

Il est possible ainsi d'indiquer le type du paramètre :

# let f (x:int) = x * x;;
val f : int -> int = <fun>

Utilisation

Pour appliquer une fonction à une valeur il suffit de les séparer d'un espace. On peut ajouter des parenthèses :

# f 2;;
- : int = 4
# f(2);;
- : int = 4

Attention ! L'application d'une fonction est prioritaire sur les autres opérateurs. Il peut donc être indispensable d'utiliser des parenthèses :

# f 2 + 2;;
- : int = 6
# f (2 + 2);;     
- : int = 16

Fonction sans argument

Il est possible d'avoir des fonctions sans argument. On utilise () à la place d'une variable :

# let f () = 42;;
val f : unit -> int = <fun>

Fonction sans valeur de retour

Une fonction qui ne renvoie rien, renvoie un type unit :

# let f x = print_int x;;
val f : int -> unit = <fun>

Fonctions récursives

Pour déclarer une fonction récursive il faut utiliser le mot-clé rec :

let rec factorielle n =
	if n = 0 then 1 else n * factorielle (n - 1)