Что-то у меня не получается разобраться с trace в cmucl. Точнее, не могу заставить его работать как надо.
Поясню на примере.
CL-USER> (defun fact (n)
(if (= n 0)
1
(* n (fact (1- n)))))
FACT
CL-USER> (trace fact)
(FACT)
CL-USER> (fact 5)
0: (FACT 5)
0: FACT returned 120
120
Но хотелось бы, чтоб показывался каждый вызов функции, а не 1. Как, например, в clisp'е:
[1]> (defun fact (n)
(if (= n 0)
1
(* n (fact (1- n)))))
FACT
[2]> (trace fact)
;; Трассировка функции FACT.
(FACT)
[3]> (fact 5)
1. Trace: (FACT '5)
2. Trace: (FACT '4)
3. Trace: (FACT '3)
4. Trace: (FACT '2)
5. Trace: (FACT '1)
6. Trace: (FACT '0)
6. Trace: FACT ==> 1
5. Trace: FACT ==> 1
4. Trace: FACT ==> 2
3. Trace: FACT ==> 6
2. Trace: FACT ==> 24
1. Trace: FACT ==> 120
120
В мануале по cmucl ничего путного не нашел. Пробовал менять спеки компилятора, режимы трассировки -- все бестолку.
Форум —
Development
