Как правильно визуализировать рекурсивные вызовы функций с помощью CHICKEN? - PullRequest
0 голосов
/ 11 июня 2019

Я новичок в схеме (мой опыт работы с 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 есть более идиоматический способ получения отладочной информации при каждом вызовефункции, чтобы я мог видеть, как происходят вызовы функции?

1 Ответ

1 голос
/ 11 июня 2019

Нет, я тоже так делаю.Если вы хотите что-то более удобное, вы можете попробовать trace egg , который может автоматически дать вам вложенность вызовов и входные параметры.

Если вы хотите немного поумнеть, вы можете использовать "Перья" отладчик, который поставляется с КУРИЦОМ.

...