Programmation Fonctionnelle

Polytech Paris Saclay
2024-2025

Adrien Durier

OCaml

IV. Retour à l'impératif

Back to the variables

  • x est de type int ref
  • y est de type int
  • ! est de type 'a ref -> 'a
  • Quel est le type de 'x := !x + 1' (s'il en a un ?)
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

Back to the variables

  • x est de type int ref
  • incremente est de type int ref -> unit
  • incrementePleinDeFois est de type ...?
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

Back to the variables

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

Quel est le type de " ; " ?

Back to the variables

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...

Back to the variables

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

Programmation Fonctionnelle - IV. Retour à l'impératif (version Web)

By Adrien Durier

Programmation Fonctionnelle - IV. Retour à l'impératif (version Web)

Programmation Fonctionnelle: Cours 4 - Retour à l'impératif (version Web)

  • 187