Polytech Paris Saclay
2024-2025
Adrien Durier
OCaml
Back to the variables
x est de type int ref
y est de type int
! est de type 'a ref -> 'a
x := !x + 1' (s'il en a un ?)
let x = ref 3
let _ = x := !x + 1
let y = !xLes 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;
!xint 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;
!xQuel 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