Я возился с разработкой игры в clojure, и одна вещь, которая меня очень увлекла, — это горячая замена кода.
Я использую шикарные clojure и emacs с плагином lein-swank
.
Моя главная проблема заключалась в опечатках. Скажем, я обновляю функцию, делаю небольшую ошибку, а затем нажимаю Ctrl-C Ctrl-C, чтобы отправить ее в REPL:
(if (> (rand) .5) (println "yay") (println "boo"))
(Мне нужно было написать 0.5
, а не .5
.)
В этом случае вся программа просто выйдет из строя и сгорит, и мне нужно будет перезапустить все это. Горячая замена — это здорово, но если я не могу сделать даже малейшей ошибки, то какой в этом смысл?
Итак, каков именно рабочий процесс здесь? Я что-то упускаю? Или есть способ сделать шикарный clojure более устойчивым к этим маленьким ошибкам? (Я полагаю, что лучше всего было бы просто вернуться к предыдущему рабочему состоянию, хотя это может быть немного сложно.)
Спасибо!