INF121:
Algorithmique et Programmation Fonctionnelle
Cours 4: Fonctions et types récursifs
Année 2015 - 2016
Les précédents épisodes de INF 121
ITypes de base :
Type Opérations Constantes
bool not, &&, || true, false
int +,-,*,/,mod, ... ...,-1, 0, 1, ...
float +.,-.,*.,/. 0.4, 12.3, 16. , 64.
char lowercase, code, ... ’a’, ’u’, ’A’, ...
Iif ... then ... else ... expression conditionnelle
Iidentificateurs (locaux et globaux)
Idéfinition, utilisation et composition de fonctions
Itypes avancés : synonyme, énuméré, produit, somme
Ifiltrage et pattern-matching
1 / 23
Plan
Retour sur les fonctions
Récursivité
Terminaison
Types Récursifs
Conclusion
Définition de fonctions en OCaml
Rappels
let fct_name (p1:t1) (p2:t2) ... (pn:tn) : t=expr
Exemple :
let max2 (x:int) (y:int) : int =if x>ythen xelse y
Une fonction OCaml
Ides paramètres formels (optionnels) : xet y
Iune valeur = l’expression correspondant au corps de la fonction
(qui permet de calculer le résultat)
if x>ythen xelse y
Iun type, qui dépend :
Idu type des paramètres de la fonction
Idu type du résultat
int int int
Iun nom (optionnel) : max2
2 / 23
Appel de fonctions en OCaml
Rappels
Exemple :
I(max2 5 9) (les parenthèses peuvent parfois être omises)
I(max2 (min2 3 8) 9)
I(max2 (5 4) (8 + 3))
Plus généralement :
let fct_name (p1:t1) (p2:t2) ... (pn:tn) : t=expr
Ile type de fct_name est t1 t2 ... tn t
Iappel de la fonction fct_name ànparamètres :
(fct_name e1 e2 ... en)
où :
Ie1,...,en sont les paramètres effectifs
Ichaque paramètre effectif ei a pour type ti
ILe type de (fct_name e1 e2 ... en)est t
3 / 23
1 / 28 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !