使用Swank Clojure进行“热插拔”代码和崩溃恢复

4

我一直在用Clojure开发游戏,其中一个让我非常兴奋的事情是热代码交换。

我使用了Swank Clojure和带有lein-swank插件的Emacs。

我的主要问题是打字错误。比如我更新了一个函数,犯了个小错误,然后按下Ctrl-C Ctrl-C将其发送到REPL:

(if (> (rand) .5) (println "yay") (println "boo"))

(我应该写0.5而不是.5。)

在这种情况下,整个程序将会崩溃,我需要重新启动整个程序。热代码交换很棒,但如果我连一个小错误都不能犯,那还有什么意义呢?

那么这里的工作流程到底是什么?我有没有漏掉什么?或者有没有办法使Swank Clojure更能够抵抗这些小错误呢?(我想最好的方法就是重置到以前的工作状态,尽管可能有点困难。)

谢谢!

2个回答

2

程序不应该“崩溃”,它应该引发异常并将您扔进调试器中,您可以通过按下Q (sldb-quit)来关闭调试器。关闭调试器后,程序应该继续正常运行。如果这不是发生的事情,那么您的SLIME配置可能出了问题。


0

个人建议使用C-M-x而不是C-c C-c。我认为两者都不应该有你遇到的问题,所以更换可能无法解决它。


真的吗?如果您意外地使用C-M-x访问nil属性或其他内容的代码会发生什么?这是否意味着我的设置出了问题? - thedayturns
1
耸肩 Slime打开一个带有堆栈跟踪的窗口。如果有什么有趣的东西,我会浏览一下,然后按Q键关闭它并继续工作。 - amalloy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接