mof*_*eta 5 record clojure slime leiningen read-eval-print-loop
我有一个leiningen项目.在其中一个clojure源文件中,我定义了一些记录.我的工作流程通常是启动emacs并连接到'lein swank'REPL.一旦我连接到REPL,我就切换到相应的命名空间和Cc Ck文件,所以我可以开始使用REPL和文件中的代码.但是,如果我对该文件中的记录进行更改并抄送它,则REPL不会获取更改.
所以,就目前而言,每当我需要对记录进行更改时,我必须停止lein swank进程,重新启动它,并从emacs重新连接到它.这变得非常快.我错过了什么?我尝试过Cc Cl而不是Cc Ck,但这不起作用.我已经尝试删除项目根目录中的"class"目录,但这也是不行的.
我很感激任何见解或建议.
另外,另外,我总是在定义记录的命名空间中工作.
编辑:我实际上是在defrecord中更改协议的实现.一旦我改变它并使用Cc Ck编译,并在REPL中创建一个新记录,REPL仍然使用旧的协议实现.
我可以使用一个示例,但也许您正在更改记录的定义并查看更改之前创建的某些记录的实例?
如果您从 repl 定义记录的实例,然后更改 defrecord,重新加载 repl,然后使用不同的名称创建一个新记录,您可以看到两个副本以及它们之间的差异。
我尝试通过在我的项目中有一个文件调用来避免这种混乱,(use :reload-all ... all the namespaces in my project ...)然后我可以重新加载这个文件,并且重新加载所有会抛出旧的 var 绑定等。