Académique Documents
Professionnel Documents
Culture Documents
Cours 1 Pfa
Cours 1 Pfa
Introduction
Types de bases
Fonctions et récursivité
Filtrage par motifs
N-uplets
Types polymorphes
3
Introduction
Programmation fonctionnelle
C’est un style (un paradigme) de programmation ou la notion de base est la fonction au
sens mathématique du terme.
Langages
Haskell: programmation fonctionnelle pure (absence totale d’effets de bords)
Int: le type des entiers signés (décimal, octal, Float: les nombres à virgule flottante (écriture
binaire, hexadécimal) décimale, avec l’exposant en base 10)
#5 ;;
# 5.5;;
- : int = 5
- : float = 5.5
# 12345 + 1;;
# 5.0;;
- : int = 12346
- : float = 5.
# 10 mod 3;;
# 5.;;
- : int = 1
- : float = 5.
# 1 - - 2;;
# 31.415926e-1;;
- : int = 3
- : float = 3.1415926
# 0x7fffffff;;
: int = -1
5
Expressions de base (2)
Opérations arithmétiques
Type int: + - * / mod
Type float: +. -. *. /.
6
Déclaration de variables et de fonctions
Le mot clé let permet d’introduire des variables et des fonctions.
Variables:
let nom_var = val;; (déclaration globale)
let nom_val = val in exp;; (déclaration locale)
fonctions
let nom_fct suite_d_arguments = corps_fct;;
Ou bien: fun arg1 arg2….arg3 -> corps_fct;;
7
Déclaration de variables et de fonctions
# let x =5 ;;
#let sumi =
let sum2 j =
i+j in sum 2 ;;
8
Fonctions récursives
Une fonction récursive est une fonction qui fait appel à sa propre définition.
Utilisé pour exprimer des traitement répétitifs
Exemple
#let rec power i x =
if (i=0) then 1.0 else
x*.(power (i-1) x);;
Le type est formé à partir de l’opérateur * et des types des différents éléments.
Un N-uplet peut être d’arité quelconque (nombre d’éléments)
Les éléments d’un N-uplet peuvent être de types différents.
Le système génère alors des types dits: polymorphes ou génériques. Ils sont
notés: ‘a, ‘b, ‘c….
Dans le deuxième exemple, la fonction peut s’appliquer à différents types (int, float…) mais la
comparaison oblige que les deux arguments soient du même type polymorphe. Dans le troisième
exemple, rien n’indique que les types de x et y doivent être le même type polymorphe.
13
Système de typage Ocaml
Ocaml est un langage fortement typé: une expression possède UN
type, contrairement au langage C par exmeple ou une valeur peut être
remplacée par une valeur d’un autre type (exemple un int par un
double).
Grâce au typage, le langage est dit sûre. La définition formelle de la
https://ocaml.org/learn/companies.html
14
N’hésitez pas à poser ou envoyer vos questions
15