Clojure 开发:IDE 还是 REPL?

2024-03-23

我已经使用 Clojure 一段时间了,想要创建一些比玩具更大、更复杂的项目。过去几年我一直在使用 Java,并且已经习惯了 IDE 为我所做的事情——编译大量类,将它们打包在 jar 中,创建批处理文件供用户启动它们。

当我查看 Clojure 中的开发示例时,它们似乎沿着将文件加载到 REPL 的路线,查看它们如何工作,编辑文件,重新加载,重复。任何地方都不会生成类或 jar。例如,在 Stuart Halloway 精彩的“Programming Clojure”中,我找不到“:gen-class”的任何示例。我使用过的 Clojure IDE(ClojureBox 和 enclojure NetBeans 插件)似乎促进了相同的工作流程。

这是故意的吗?这些工具是否太不成熟,或者我只是不“明白”?

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

感谢您分享您的意见。


我认为这里确实有两个问题:

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

B)工作流程:

我的工作流程是这样的:

  1. 打开一个文件并编写一些高级的一厢情愿的声明

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

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

  1. 打开另一个文件并编写一些基本测试来检查功能是否有效

3.5 将这些复制到REPL

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

  2. 将辅助文件包装在 deftest 中

现在,当我一个月后回来时,我可以运行我的测试并感到高兴!保存 REPL 缓冲区可以毫不费力地提供一些价值。这正是目前对我有用的方法,我很高兴能够接受更好的方法的教育。

至于 IDE 与 REPL 的选择 - 大多数 IDE 都有带有 REPL 的插件,所以我不确定这是一个还是另一个选择 - 实际上它只是关于你在哪个文本编辑器中工作效率高,以及你想要如何管理你的项目结构。没有任何“这样做”结构预制的 AFAIK,因此在这一点上更容易查看特定项目(例如 Clojure 本身、penumbra 或 compojure 或主站点上列出的任何库)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Clojure 开发:IDE 还是 REPL? 的相关文章

  • python - Atom IDE 如何启用自动完成代码以查看模块中的所有函数

    我正在为我的 python 项目使用atom IDE 在某些情况下有自动完成建议 但我想知道是否可以列出导入模块具有的所有可能功能 例如 如果我导入import urllib当我打字时urlib 并按 ctrl tab 想要查看包含可能使用
  • Clojure:在特定命名空间中启动 repl

    我安装了 boot clj 并且希望能够在外部编辑器中编辑 clj 文件 并单独运行一个命令行 REPL 我可以从中调用我在 clj 文件中更改的函数 不需要特殊的重新加载命令 另一件事是我不想手动键入命令来包含命名空间 我只想运行一个将我
  • 在 Visual Studio 中进行嵌入式代码开发(尤其是使用 C18 的 PIC)

    我使用 Visual Studio 编写桌面应用程序 我发现它非常用户友好且易于使用 如果可能的话 我还想在Visual Studio中编写嵌入式代码 例如 是否可以使用 C18 或任何其他类似的基于 C 的语言为 PIC18Fxxx 系列
  • 在 Clojure 中创建映射条目

    是什么built inClojure 方式 如果有 创建单个映射条目 换句话说 我想要类似的东西 map entry key value 换句话说 结果应该或多或少等于 first key value Remarks 当然 我已经尝试过谷歌
  • pmap 和线程数

    user gt Runtime getRuntime availableProcessors 2 并评估这个例子 http clojuredocs org clojure core clojure core pmap example 684
  • 如何在 Clojure 中更新原子的向量元素?

    我有一个矢量原子 我想更新一个本身就是地图的条目 def vector atom atom swap vector atom conj id 1 name myname 我该如何只更新该成员 在可变的 Java 领域的思维方式中 我会做这样
  • 如何创建 Clojure 拉链

    我如何使用 Clojure Zipper 创建以下图表 vector zip A B C D E F 我努力了 vector zip A B C D E F 它返回 A B C D E F nil 这样对吗 是的这是对的 对您的代码的一些测
  • 免费的 C 语言 IDE? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 谷歌搜索 c ide C 会产生太多 C 结果以及不相关的结果 这些搜索词似乎太短 无法产生相关结果 有人有免费的 Win32 C IDE
  • core.async不是违背Clo​​jure原则吗?

    我看到许多 Clo jure 程序员对新的 core async 库充满热情 尽管它看起来很有趣 但我很难看出它如何符合 Clojure 原则 所以我有以下问题 它在任何地方都使用可变状态 正如函数名称通过感叹号所暗示的那样 例如 alt
  • “完美”的 Python 调试器具有哪些功能? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 请告诉我您希望当前的 Python 调试器具有哪些功能 我正在创建一个新的 Python IDE 调试器 并期待着具有挑战性的请求 请原谅我无耻
  • 为什么 clojure future 会阻塞主线程?

    我有一个简单的 lein 项目 其中 main包含一个未来 def f future 42 defn main args println f 当我跑步时lein run它打印42但不返回 我不明白为什么它不返回 如何得到lein run回来
  • 如何在 IntelliJ IDEA 中的当前文件上运行外部工具

    我需要通过 scp 将当前编辑的 JSP 上传到服务器 我的 Windows 计算机上的路径上有 pscp 如何设置 intellij idea 以一键单击当前打开的文件来执行此操作 我可以在 eclipse 中设置它 通过 运行工具 和参
  • 如何设置 Xcode 来代替 Qt Creator 工作?

    我不使用 Qt Creator 的 UI 设计功能 对于一个新项目 我想体验一下使用 Xcode 的工作 这将是一个常规的 Qt 项目 使用 C 和 Qt 库开发 就像在 Qt Creator 中一样 我没有使用 OS X 尤其是 Xcod
  • 最佳 Fortran IDE [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 stackoverflow上有人用Fortran吗 您使用什么 IDE 您认为哪一个是最好的 似乎我周围的很多人都对 Intel Visu
  • android studio 和 android SDK 捆绑的 eclipse 版本有什么区别

    我没有 Android 开发经验 我想开始编写应用程序 The 官方开发者工具页面 http developer android com tools index html包含两个不同 IDE 的链接 第一个包含捆绑的 ADT 版本Eclip
  • Clojure读行函数问题

    我试图在我的 Clojure 程序中获取控制台输入 但是当它到达程序的该部分时它给我这个错误 Exception in thread main java lang ClassCastException clojure lang LineNu
  • Emacs/Swank/Paredit for Clojure 的温和教程

    我要转向 Emacs 来工作Clojure http en wikipedia org wiki Clojure Lisp 为了能够执行以下操作 我需要在 Emacs 上设置哪些信息 自动匹配 生成相应的右括号 自动缩进 Lisp Cloj
  • 可以混合使用 JVM 语言吗?即:Groovy 和 Clojure

    我知道你可以轻松地混合groovy java clojure java 无论什么JvmLang java 这是否也意味着我也可以让 clojure 和 groovy 代码进行交互 如果我使用 Grails 或 jRoR 我也可以在该环境中使
  • 在 Eclipse 中突出显示修改的行

    在 netbeans 中 如果我打开一个受版本控制的文件 则修改的行会在左侧突出显示 绿色表示新行 蓝色表示修改行 在Eclipse中是否可以得到类似的效果 打开首选项窗口 搜索 差异 选择快速差异 将 使用此参考源 更改为 SCM 提供程
  • Scala repl 抛出错误

    当我打字时scala在终端上启动 repl 它会抛出此错误 scala gt init error error while loading AnnotatedElement class file usr lib jvm java 8 ora

随机推荐