Trace "manuelle" d'une fonction récursive
Bonjour,
Je cherche à reproduire manuellement le comportement de la fonction trace de Lisp sur une fonction récursive simple, c'est-à-dire imprimer à chaque appel la valeur de l'argument et en sortie la valeur retournée. Voici le début de mon expérimentation:
Code:
1 2 3 4 5
| (defun fact (n)
(format t "Entering fact ~A~%" n)
(if (> n 0)
(* n (fact (- n 1)))
1)) |
Ainsi j'obtiens la liste des appels.
CL-USER> (fact 3)
Entering fact 3
Entering fact 2
Entering fact 1
Entering fact 0
6
Mon problème concerne la liste des valeurs retournées. Comment imprimer par effet la valeur retournée par une fonction avant de sortir de celle-ci ?