我最近一直在学习Clojure.在Clojure世界中是否存在类似Scala的工作表,我可以将任何代码放入其中并在保存后立即对其进行评估?或者也许Clojure有类似的解决方案?
我现在正在与lein repl合作,遗憾的是,不能说它是有史以来最有用的工具.
Boz*_*sov 10
在Lisp开发中(特别是Clojure),首选的编程风格通常被称为交互式编程 - 开发人员始终保持应用程序加载的图像,并通过REPL与之交互.您可以轻松地动态修改加载的代码并立即在REPL中测试更改(使用Scala完全不容易 - 必须使用类似JRebel的方法来执行此操作).相比之下,我发现Scala工作表是一个非常原始的解决方案......
我在Clojure中遵循的工作流程是:
基本上Clojure REPL比Scala REPL强大得多,我个人认为它远远优于Scala IDE工作表.一旦你习惯了交互式增量编程风格,Lisp就会提供其他所有东西,通过比较开始看起来奇怪复杂.我不熟悉Eclipse的CounterClockWise Clojure插件,但我很确定它提供与Emacs的nREPL.el类似的功能.
您可能想看看Leiningen的autoexpect插件.每次在工作目录中保存任何文件时,插件都会编译并运行您的代码; 作为奖励,它将评估任何可以作为测试的"期望"函数调用.这对于测试驱动开发非常有用,并且对于使用REPL是一个很好的补充,如另一个答案所述(我经常使用一个或另一个或两者,这取决于我有多少测试用例).
我应该注意,由于JVM和Leiningen的启动成本,运行autoexpect比反复运行"lein test"或"lein run"要快得多.