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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?