2024 Clojure 状况调查! 分享你的想法。

欢迎!请参阅 关于 页面以了解更多关于该功能的信息。

+7
REPL

我已经使用了很长时间的 nrepl,它与使用 clojure.main/repl 创建 "子 repls" 不太兼容。现在我在使用套接字 repls,真的很享受子 repls 又能对我来说可用。我主要只是进行一个简单的调用

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

人们在子 repls 上还做了些什么?创建评估的历史文件?将形式投入数据库?非常感兴趣地要知道。

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 可以做什么的酷例子。

...