2024 Clojure现状调查中分享你的想法!

欢迎!请看关于页面以获得更多关于如何使用本网站的信息。

+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

这是一段不完整的代码,用于通过http连接到clojure.main/repl(类似于nrepl的drawbridge)。

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

我相信代码的通信部分都在那里,缺少的部分是关于通过签名请求来安全地访问REPL。

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

+1
0

我使用NightCode的一个分支叫做nightclub来为部署的应用提供一个嵌入式的REPL、mini IDE、文件编辑器和项目管理器。用户基本上得到一个clojure环境以及应用的实时脚本,以及一个向REPL回显命令的GUI,以便有类似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可以做什么的一个很好的例子。

...