Dans un premier temps, nous définissons des fonctions utilitaires
classiques (
cadr,
cddr...
length,
member... qui ont presque toutes été vues dans le présent
ouvrage, celles qui n'ont pas été vues étant très faciles. Deux
fonctions,
deug-erreur et
deug-map, demandent tout de
même une explication.
Fonction deug-erreur
Nous avons défini la fonction
deug-erreur pour personaliser les
messages d'erreurs de
deug-eval (ils commencent tous par
deug-eval):
39
|
;;;
(define (deug-erreur fn message donnee)
(erreur 'deug-eval fn message donnee) )
|
Fonction deug-map
Nous avons défini une fonction
deug-map (et non
map)
car, en Scheme, la fonction
map opère sur un nombre quelconque
de listes, la fonction appliquée étant une fonction n-aire (alors que
nous l'avons toujours utilisée -- et nous l'utiliserons encore ainsi
dans le présent logiciel -- avec une fonction unaire et une seule
liste):
75
|
;;;
;;;
;;;
(define (deug-map f L)
(if (pair? L)
(cons (f (car L)) (deug-map f (cdr L)))
'() ) )
|