balai
efface récursivement et physiquement certaines copie
en les faisant pointer vers la copie précedente.
class sauvegarde_autogérée = object (self : 'mytype) inherit sauvegarde method private coup_de_balai p q = try let q' = if p = q then 2 * q else q in let la_sauvegarde = self # récupère # coup_de_balai (succ p) q' in copie <- la_sauvegarde; if p = q then Some self else la_sauvegarde with Not_found -> None method balai = ignore (self#coup_de_balai 1 1) end;; |
coup_de_balai
. Une fonction ne conviendrait pas, car
coup_de_balai
utilise la variable d'instance copie.