История изменений
Исправление den73, (текущая версия) :
Я не знаю, где это советуют, но я не вижу в этом проблемы - половина СУБД реализована именно таким способом. Если это будет мешать, то можно и поменять.
Главное, я уже выяснил, что отладчик нормально работает с таким кодом:
(eval-when (:compile-toplevel :load-toplevel)
(require :screamer))
(in-package :screamer-user)
(defun f0 (x)
(if (oddp x)
x
(progn
(break)
(fail))))
(defun f1 ()
(all-values
(let ((x (either 1 2 3 4)))
(f0 x))))
Также у нас есть библиотека для реализации «версионного состояния». Она пока в зачаточном состоянии, но дизайнерские вопросы вроде уже решены. Возможно, что нам и не будет нужен откат setf.
Я не соглашусь, что screamer - это пролог. По-моему, это именно лисп с элементами пролога.
Исправление den73, :
Я не знаю, где это советуют, но я не вижу в этом проблемы - половина СУБД реализована именно таким способом. Если это будет мешать, то можно и поменять.
Главное, я уже выяснил, что отладчик нормально работает с таким кодом:
(eval-when (:compile-toplevel :load-toplevel)
(require :screamer))
(in-package :screamer-user)
(defun f0 (x)
(if (oddp x)
x
(progn
(break)
(fail))))
(defun f1 ()
(all-values
(let ((x (either 1 2 3 4)))
(f0 x))))
ним. Хотя в стеке есть некоторое количество «мусора», в целом можно работать. И даже SBCL-ский степпер позволяет походить по коду после break. А то, что я раньше хотел сделать с Arnesi, скорее всего, можно было бы отлаживать только принтами или писать свой отладчик.
Также у нас есть библиотека для реализации «версионного состояния». Она пока в зачаточном состоянии, но дизайнерские вопросы вроде уже решены. Возможно, что нам и не будет нужен откат setf.
Я не соглашусь, что screamer - это пролог. По-моему, это именно лисп с элементами пролога.
Исходная версия den73, :
Я не знаю, где это советуют, но я не вижу в этом проблемы - половина СУБД реализована именно таким способом. Если это будет мешать, то можно и поменять.
Главное, я уже выяснил, что отладчик нормально работает с таким кодом:
(eval-when (:compile-toplevel :load-toplevel)
(require :screamer))
(in-package :screamer-user)
(defun f0 (x)
(if (oddp x)
x
(progn
(break)
(fail))))
(defun f1 ()
(all-values
(let ((x (either 1 2 3 4)))
(f0 x))))
ним. Хотя в стеке есть некоторое количество «мусора», в целом можно работать. И даже SBCL-ский степпер позволяет походить по коду после break. А то, что я раньше хотел сделать с Arnesi, скорее всего, можно было бы отлаживать только принтами или писать свой отладчик.