Я пытаюсь понять, как интерпретировать вывод и использовать отладчик Lisp.
У меня есть довольно простой Backtrace для оценки моей функции, но я не могувыяснить, как его использовать, чтобы выяснить, в какой «форме» Lisp в моей функции произошло исключение.
Буду признателен за любые подсказки относительно того, что я должен делать, чтобы найти, где в моем коде ошибкаoriginated.
Кроме того - почему второй кадр отображается как «нет доступной отладочной информации для кадра»?
Я прикрепил снимок экрана с помощью отладчика и repl (я такжениже я включил мою функцию - я знаю, что это очень неправильно - но я просто заинтересован в том, чтобы научиться правильно использовать отладчик).Кроме того, я нажимаю 'v' в первом кадре, чтобы перейти к источнику, но это привело к ошибке ниже repl.(РЕДАКТИРОВАТЬ - проблема с отсутствующим исходным кодом устраняется путем загрузки и копирования по правильному пути)
(ужасная функция - без комментариев, пожалуйста!)
(defun myquicksort2 (lst)
(if (eql 1 (length lst))
lst
(let ((mid (middle lst)))
(do ((i 0 (+ i 1)))
((>= i mid) (append (myquicksort2 (subseq lst 0 mid))
(myquicksort2 (subseq lst mid (length lst)))))
(if (> (ltval i lst) (nth 100 lst))
(let ((tmp (ltval i lst)))
(setf (nth i lst) (gtval i lst))
(setf (nth (- (- (length lst) i) 1) lst) tmp)))))))
(defun ltval (i lst)
(nth i lst))
(defun gtval (i lst)
(nth (- (- (length lst) i) 1) lst))
(defun middle (lst)
(round (/ (length lst) 2)))