Errata (Programmation fonctionnelle, générique et objet)
(dernière modification : 10/20)
- Chapitre 3
- p. 44, pi_approx ne contient pas
"d'environnement local au sein d'une fonction locale".
- Chapitre 4
- p. 57 "f(n0 + n)" →"f(n0)".
- p. 74, "décurryfier" →"curryfier".
- Chapitre 5
- p. 104, milieu de la page :
"type ('a, 'b, 'c, 'd, 'e)" →
"type ('a, 'b, 'c)".
"BinaryG of ('c * 'd -> 'e)" →
"BinaryG of ('a * 'b -> 'c)".
- p. 110, 2ème ligne :
"<exp i>" →
"<exp>".
- p. 117, dans poly2 :
"sqrt disc" →
"sqrtdisc".
- p. 124 :
"147.210.0.0" →
"12-34-56-78-9A-BC".
- p. 139, dernière ligne :
Le filtrage pour les variants polymorphes bénéficie d'une analyse de
non redondance.
- Chapitre 6
- p. 160, binlitree_map s'écrit aussi :
let binlitree_map f (BinLiTree t) =
BinLiTree (bintree_map (List.map (tree_map f)) t)
- Chapitre 7
- p. 201, dans list_insert' :
"(insert x ys)" →
"(aux ys)".
- p. 206, 1er exemple, réponse du système :
"val f : float -> float"
- p. 216, 3ème exemple :
"Array.map (fun x -> x * 3)" →
"Array.map (fun x -> x * 3) arr".
- Chapitre 8
- p. 242, dans seq_wordlist :
"word_len - 1" →
"word_len + 1".
- p. 292, milieu de page :
"approxim_benchmark (fun () ->" →
"approxim_benchmark (Frozen (fun () ->".
- p. 292, fin de page :
"à la fonction mult_eval" →
"à la fonction f".
- p. 303, note de bas de page :
"(!!)x" peut en fait s'écrire aussi "!!x".
- p. 311, dans stm_mem_val:
"Lazy.is_val y && (x = !!y || stm_mem_val !!ys x)"
→ "(Lazy.is_val y && (x = !!y)) || (Lazy.is_val ys && stm_mem_is_val !!ys x)".
- p. 320, 1ère phrase :
Le degré des arbres issus de lazytree_build n'est pas
nécessairement borné.
- p. 332, 1er paragraphe :
"atteint la liste" →
"atteint la fin de la liste".
- Chapitre 9
- p. 364, dernière ligne : "P1" et "P2".
à inverser.
- p. 383, dans Irréversibilité du masquage :
"M" → "M1" .
- p. 399, 2ème exemple :
"module Sub : S1" →
"module Sub : S".
- p. 405, dans module G_Env :
"Button" →
"G.Button", et
"s.key" →
"s.G.key".
- p. 408, 1ère phrase :
"équivalent à CFuns" →
"équivalent à Complex_F1".
- p. 409, dernier paragraphe :
"f_c=f(c,.)" →
"f_c(c)=f(c,z)".
"itération de f_c(0)" →
"itérations sur (f_c(c))(0)".
- p. 415, 1er paragraphe :
"non masquage" →
"masquage".
- Chapitre 10
- p. 465, encadré :
"typage dans F" →
"typage du résultat de F".
- p. 466, dans APPLE_F :
"with module CF = CFuns" →
"with module CF = CFuns and module S = Set".
- p. 467, dans Mixed_Pair la contrainte de type est
indispensable, mais pas par ex. dans :
module Mixed_Pair (M1 : OP) (M2 : OP with type t = M1.t) =
struct let make_pair x y = (M1.op x x, M2.op y y) end.
- p. 472, dans module Size_Set :
"type s" →
"type elt".
- p. 472, dans module OS_Set :
"Val_Order (Order_Set) (Size_Set)" →
"Val_and_Order (Size_Set) (Order_Set)".
- p. 480, "module FF" : ajouter "struct".
- p. 500, dans module type BINTREE_CONTAINER, dernier
paramètre de map :
"'a bintree" →
"'b bintree".
- Chapitre 11
- p. 512, type de counter :
"[< `Get_value | `Incr of int ] -> int" →
"int -> [< `Get_value | `Incr of int ] -> int".
- p. 517, règle du typage explicite :
"t2" →
"t".
- p. 518, la note 6 de bas de page doit être plutôt associée à la
propriété (4).
- p. 529, haut de la page :
"counter life" →
"counter name".