Adrien Durier PRO
Enseignant-Chercheur en informatique @ Université Paris-Saclay
Polytech Paris Saclay
2024-2025
Adrien Durier
OCaml
let rec fibonacci n =
match n with
| 0 -> 0
| 1 -> 1
| _ -> fibonacci (n - 1) + fibonacci (n - 2)OCaml
OCaml
let rec fibonacci n =
match n with
| 0 -> 0
| 1 -> 1
| _ -> fibonacci (n - 1) + fibonacci (n - 2)Correct
+ Efficace
+ Elegant
OCaml
let rec fibonacci n =
match n with
| 0 -> 0
| 1 -> 1
| _ -> fibonacci (n - 1)
+ fibonacci (n - 2)Impératif
VS
int fibonacci (int n) {
int a = 0;
int b = 1;
int c;
int i;
if (n == 0) return 0;
for (i = 2; i <= n; i++)
{
c = a + b;
a = b;
b = c;
}
return b;
}Un peu de code!
let rec fibonacci n =
match n with
| 0 -> 0
| 1 -> 1
| _ -> fibonacci (n - 1) + fibonacci (n - 2)Un peu de code!
let rec fibonacci n =
match n with
| 0 -> 0
| 1 -> 1
| _ -> fibonacci (n - 1) + fibonacci (n - 2)let : déclarations (fonctions, constantes)
rec : Indique que la fonction est récursivefibonacci : Appel récursif
fibonacci n utilise fibonacci (n - 1) et fibonacci (n - 2)
match : filtrage
Comme en maths:
Soit x tel que ...let x such that ...Un peu de code!
let rec fibonacci n =
if n = 0 then 0
else if n = 1 then 1
else fibonacci (n - 1) + fibonacci (n - 2)
let : déclarations (fonctions, constantes)
rec : Indique que la fonction est récursivefibonacci : Appel récursif
fibonacci n utilise fibonacci (n - 1) et fibonacci (n - 2)
match : filtrage
if ... then ... else : vous connaissez!Un peu de code!
let rec fibonacci n =
match n with
| 0 -> 0
| 1 -> 1
| _ -> fibonacci (n - 1) + fibonacci (n - 2)let : déclarations (fonctions, constantes)
rec : Indique que la fonction est récursivefibonacci : Appel récursif
fibonacci n utilise fibonacci (n - 1) et fibonacci (n - 2)
match : filtrage
OCaml
Présentation du cours
Présentation du cours
Evaluation
Objectifs du cours
(dans un premier temps, au moins)
OCaml
Pourquoi OCaml?
Pourquoi la programmation fonctionnelle?
Les paradigmes de la programmation fonctionnelle ont eu une influence importante sur de nombreux langages récents :
Les besoins croissants de programmes sûrs, validés ou vérifiés, ont mené à l'adoption croissante de :
Pourquoi la programmation fonctionnelle?
...
Pourquoi OCaml?
Du mauvais code (en C)
Pourquoi OCaml?
Robin Milner, Prix Turing
Un peu d'histoire ...
Origine : \(\lambda\)-calcul (Church, ~1930)
ML (1973, Robin Milner)
But : Preuve de programmes
OCaml
Utiliser OCaml
Site Officiel: ocaml.org
Développé par l'INRIA
Utiliser OCaml
Site Officiel: ocaml.org
Développé par l'INRIA
$ apt install opam
$ opam init
$ eval $(opam env)
# Et voilà! :)Utiliser OCaml
Site Officiel: ocaml.org
Développé par l'INRIA
js_of_ocaml, interpréteurs web
ocaml, le défaut (sans coloration syntaxiqueutop, mieux, avec coloration syntaxique
opam install utop
Utiliser OCaml
Utiliser OCaml
Utiliser OCaml
Compilation
;; ';; ne fait pas à proprement parler partie du langage, et ne doit pas être utilisé pour remplacer le ' ; ' de C !!!!!!!
Top-Level & Compilation
(* ;; interdit si compilé! *)
let x = 3;;
let f x = x + 4;;
f 5;;
- : int = 7Ressources
By Adrien Durier
Programmation Fonctionnelle: Introduction