我是 Clojure 的新手,并且开始尝试构建应用程序。
到目前为止,我所看到的关于编译 Clojure 程序的教程的所有内容都涉及交互性。例如,“加载 REPL 并键入 (load-file "this-or-that") 运行。这很好,但还不够。
我已经习惯了 C 或 Delphi 等语言的编辑-编译-运行习语,以至于我本能地驱动进行编辑,然后点击“Mx compile”。
问题是“lein uberjar”,我理解它等同于“make”,即使是一个 hello world,执行起来也非常缓慢。所以我将不得不弄清楚这个“交互式开发”的东西是如何工作的,停止使用 uberjar 就像它是快速制作一样,并且只在一天结束时保存它。
我在构建(使用 lein uberjar)时注意到的另一件事是,我正在开发的小型 GUI 应用程序在编译过程中会弹出框架,就好像它们在编译时正在执行一样。这对我来说似乎有点违反直觉。它不像我想象的那样类似于“制造”。
我知道 Lisp 开发事物的方式是在 REPL 中以交互方式工作,我不想改变它:我想适应这种生活方式。不幸的是,我很少看到有关如何执行此操作的文档形式。例如,如何重置机器的当前状态。只是在运行中不断编译单个片段而无法进行某种重置,这似乎有点混乱。
我在 Clojure(和 Lisp)上看到的大多数教程通常都集中在 REPL 中的黑客攻击上。应用程序部署的最佳实践对我来说仍然是个谜。我的用户只是用户;他们不会成为将文件加载到 REPL 中的开发人员。
所以这是我的问题:关于构建 Clojure 应用程序(包括部署)的整个过程的良好信息或教程的任何资源?
(注意:我已经安装并运行了所有先决条件(例如 Emacs、Slime、Leiningen 等),所以这不是一个问题)。