Я новичок в схеме (мой опыт работы с lisp ограничен настройкой emacs), и я пытаюсь лучше понять рекурсию и умозаключения.Я хотел бы получить выходные данные отладки, показывая каждый вызов функции, чтобы я мог лучше визуализировать рекурсию.
Обдумывая, я придумал
(define (last lst)
(if (null? (cdr lst))
(car lst)
(last (cdr lst))))
, чтобы получить последнийчлен списка.Вроде работает.Чтобы отладить это, я придумал
(define (last lst)
(print "Debug: " lst)
(if (null? (cdr lst))
(car lst)
(last (cdr lst))))
, который для (last '(a b c d))
приводит к
Debug: (a b c d)
Debug: (b c d)
Debug: (c d)
Debug: (d)
В CHICKEN есть более идиоматический способ получения отладочной информации при каждом вызовефункции, чтобы я мог видеть, как происходят вызовы функции?