当前位置:  开发笔记 > 开发工具 > 正文

Clojure开发:IDE还是REPL?

如何解决《Clojure开发:IDE还是REPL?》经验,为你挑选了3个好方法。

我一直在使用Clojure一段时间,并希望创建一些比玩具更大更复杂的项目.我在过去的几年里一直在使用Java,并且已经习惯了IDE为我做的事情 - 编译了很多类,将它们打包在罐子里,为用户创建批处理文件以启动它们.

当我查看Clojure中的开发示例时,他们似乎是按照加载文件的方式进入REPL,看看它们是如何工作的,编辑文件,重新加载,重复.Nary在任何地方生成一个类或jar.在Stuart Halloway非常棒的"Programming Clojure"中,我找不到一个例如"gen-class"的例子.我使用的Clojure IDE(ClojureBox和enlojure NetBeans插件)似乎促进了相同的工作流程.

这是故意的吗?这些工具是不成熟还是我没有"得到它"?

我想听一些人们的工作流程示例,如果可能的话,他们创建了一些普通用户(而不是其他开发人员)使用的非平凡程序.

感谢您分享您的意见.



1> Timothy Prat..:

我想这里有两个问题:

A)如何部署(以及构建和管理依赖项).我所能说的就是查看具有相似目标/域的其他项目并复制它们.

B)工作流程:

我的工作流程是这样的:

    打开一个文件,写一些高级的一厢情愿的声明

    开始编写一些函数来支持它

2.5在创建时将函数定义复制到REPL

    打开另一个文件并编写一些基本测试来检查函数的工作原理

3.5将这些复制到REPL

    在两个缓冲区之间进行迭代,构建测试以及最终目标的程序.这些最终成为类似的活动,我知道我已经完成了.

    在deftest中包装辅助文件

现在,当我一个月回来时,我可以运行我的测试并开心!保存REPL缓冲区可以轻松提供一些价值.这就是目前对我有用的东西,我很高兴能够接受更好的教育.

至于IDE与REPL的选择 - 大多数IDE都有具有REPL的插件,因此我不确定它是一个还是另一个选择 - 实际上它只是关于你在哪个文本编辑器中有效,以及你想如何管理你的项目结构.没有任何'以这种方式'结构预先制作AFAIK所以在这一点上更容易看到特定的项目(如Clojure本身,或半影或组件或主站点上列出的任何库).



2> tsellon..:

大多数LISP系列(和其他功能语言)IDE长期以来一直鼓励REPL开发方法.其中一些REPL还具有您可能与Java IDE关联的自动完成功能.

与标准方法相比,REPL为您提供了几个主要优势.首先,它允许您在程序运行期间执行任意代码,这可以使调试多线程系统更加简单.其次,更重要的是,它可以让您在编码时轻松测试功能.您不需要围绕新函数或类构建框架,您可以直接在REPL中使用它,并查看它如何响应各种用例.



3> Rayne..:

好吧,首先,几乎任何编辑器或IDE的任何体面的开发插件都会为您提供一种在IDE中使用Clojure REPL的方法.甚至可能允许您将文件加载到REPL中进行测试等.您无需选择其中一个.

Enclojure有很长的路要走,这是肯定的.但是,大多数人都非常满意使用Emacs,包括我自己.Emacs使用Lisp作为其配置语言,因此它通常是Lisper最自然的选择.

对于具有REPL的语言,使用REPL作为开发过程的主要部分是常态.编辑文件,将它们加载到REPL中,与它们一起播放以查看是否有工作,冲洗,重复.这是使用Clojure,Haskell和CL等REPL语言的主要优点之一.

至于构建jar,编译Clojure代码和东西,这很简单.如果你不愿意的话,你甚至不会/大多数情况下编译Clojure代码.当你这样做时,你可以用gen-class编译它,它将它编译成类文件,然后你可以把它放到一个jar中.互联网中有大量的例子甚至是教程.最简单,最有效的方法是使用Ant之类的东西,编写一个构建脚本来编译Clojure代码并为你生成.jar.我第一次这样做,我觉得这很难做,但实际上真的很简单.我只是查看了Clojure和Clojure-Contrib Ant构建文件,并引用了Ant帮助页面以获取我需要的所有其他内容.

我应该提到的一件事是,如果您要求它,Enclojure /实际上/为您构建可执行的.jar文件.我相信你将来会增加更多先进的东西.事实上,它们仍然很新.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有