请分享你的想法,参与Clojure 2024调查问卷!

欢迎!请访问关于页面获取更多关于如何使用本网站的信息。

+7
REPL

我已经长期使用 nrepl,但这与使用 clojure.main/repl 创建 "子 repl" 的兼容性不佳。我现在使用套接字 repl,非常喜欢这种子 repl 再次可用。我主要只做简单的调用

(clojure.main/repl
 :prompt (fn [] (printf "%s=> " (peek (str/split (str *ns*) #"\."))))
 :read server/repl-read)

人们还用子 repl 做了些什么?创建评估历史文件?将形式投入数据库?非常想了解。

5个答案

+1

这是连接到 clojure.main/repl 的一个不完整的示例代码(类似于 nrepl 的 drawbridge)。

wrap-repl 是一个 ring 处理器。然后 http-repl 在一个正常的 clojure.main/repl 中被调用,并将其连接到远程 repl。

我认为代码中所有通信部分都齐全,缺少的部分是在通过签名请求确保 repl 访问的安全性。

https://gist.github.com/hiredman/86aeb916b478d9e57cbce8e0e678babd

+1
0

我用它与NightCode的一个分支nightclub一起使用,为部署的应用程序提供嵌入式REPL + 小型IDE + 文件编辑器 + 项目管理器。用户基本上可以获得Clojure环境 + 应用的实时脚本,以及一个GUI,将命令回显到REPL,以获得类似交互式学习体验(类似于Excel中的VBA编辑器)。我在受限环境中从中受益,在那个环境中我唯一允许的是uberjar;在这个设置中,我除了应用程序外,还可以得到一个很好的Clojure开发环境 / 脚本 / 调试设置。

0

我用它来将fipp作为我的默认打印机,它比Clojure的默认print/pprint要快得多。

(clojure.main/repl
  :caught (fn [e] (fipp.repl/pst e))
  :print  (fn [x] (fipp.edn/pprint x)))
0

这并非专门在clojure.main/repl之上实现,但Datawalk是用子REPL能做什么的一个相当酷的例子。

...