所以我一直在研究Clojure教程,到目前为止它非常有趣。不幸的是,每次关闭我的REPL时,我都会丢失前一个会话中创建的所有defn
和def
。如何将Clojure REPL的内容转储到文件中?
因此,为了节省时间,是否有可能让Clojure REPL保存我输入到文件中的所有内容,以便我可以挖掘出我需要的未来用途?
所以我一直在研究Clojure教程,到目前为止它非常有趣。不幸的是,每次关闭我的REPL时,我都会丢失前一个会话中创建的所有defn
和def
。如何将Clojure REPL的内容转储到文件中?
因此,为了节省时间,是否有可能让Clojure REPL保存我输入到文件中的所有内容,以便我可以挖掘出我需要的未来用途?
我认为大多数人通过使用IDE将代码片段发送到REPL而不是在REPL中进行大量的直接黑客工作。这样您就可以更好地了解程序的当前状态。
如果您使用的是类Unix操作系统,则可以使用rlwrap
启动REPL。这会让你以简单的方式访问历史命令的Ctrl-R,以及存储历史本身。
您只需要安装rlwrap
并将其前置到您启动REPL的行,例如, rlwrap lein repl
如果你use Emacs and SLIME,你可以保存REPL缓冲区到一个文件就像保存任何其他缓冲区。
小贴士:
这实际上是一个比看起来更难的问题,因为像这样的转储必须考虑符号和变量依赖性,并以正确的符号顺序输出到文件。这就是说,由于代码是数据,所以应该能够编写一个能够实现这一点的函数。
在很多Lisps中,这可以通过包含所有状态的“保存图像”来实现,例如, http://www.sbcl.org/manual/Saving-a-Core-Image.html,但据我所知,Clojure没有这样的设施。 –