Polytech Paris Saclay 2024-2025
Adrien Durier
OCaml
Back to the variables
x
int ref
y
int
!
'a ref -> 'a
x := !x + 1
let x = ref 3 let _ = x := !x + 1 let y = !x
Les références sont mutables
Assignation
Accéder à la valeur d'une ref
incremente
int ref -> unit
incrementePleinDeFois
...?
let x = ref 3 let incremente x = x := !x + 1 let incrementePleinDeFois x n = for i = 1 to n do incremente x; incremente x done; !x
int ref -> int -> int
Quel est le type de " ; " ?
;
let x = ref 3 let incr = x := !x + 1 let show = !x let y = incr; incr; show
Qu'est-ce qui se passe?
De la merde...
let x = ref 3 let incrMieux : unit -> unit = fun _ -> x := !x + 1 let showMieux : unit -> int = fun _ -> !x let y = incrMieux (); showMieux ()
Magie Noire
let incr, show = let x = ref 0 in (fun () -> x := !x + 1), (fun () -> !x)
Magie Noire Noire
let compteur i = let x = ref i in fun () -> x := !x + 1; !x
By Adrien Durier
Programmation Fonctionnelle: Cours 4 - Retour à l'impératif (version Web)
Enseignant-Chercheur en informatique @ Université Paris-Saclay