read-eval-print-loop - 获取 clojurescript REPL 的最简单方法

标签 read-eval-print-loop clojurescript

在终端中启动和运行 clojurescript REPL 的最快方法是什么?我不需要连接到浏览器,只需要 REPL 来计算表达式。

文档似乎假设您想要浏览器同步或提供复杂的杂技来获得简单的 REPL。

最佳答案

看看最近发布的 clojurescript/wiki/Quick-Start guide .它确实是有史以来最准系统和最简单的。

基本上(假设您安装了 java 8 和 node.js):

  1. 从这里下载最新的 jar https://github.com/clojure/clojurescript/releases/并将其放入文件夹
  2. 使用此处的说明 https://github.com/clojure/clojurescript/wiki/Quick-Start#nodejs-repl作为灵感:

  3. 创建 node_repl.clj,其中包含包含以下内容的 jar 文件:

    (require 'cljs.repl)
    (require 'cljs.repl.node)
    
    (cljs.repl/repl (cljs.repl.node/repl-env))
    
  4. 使用 java -cp cljs.jar clojure.main node_repl.clj 执行。这应该打开 repl,如下所示:

    $ java -cp cljs.jar clojure.main node_repl.clj
    ClojureScript Node.js REPL server listening on 50658
    To quit, type: :cljs/quit
    ClojureScript:cljs.user> (+ 1 2)
    3
    

如果您想要更高级的 repl,请按照指南中的说明使用 rlwrap (rlwrap java -cp cljs.jar clojure.main node_repl.clj)

再一次,看看快速入门指南,它真的很棒(感谢 Swannodette)


编辑

如果您也想使用 nashorn(java 8 js 虚拟机)或 rhino(较旧的基于 java 的 js 虚拟机),您也可以在没有 node.js 的情况下获得工作 repl,将步骤 3 和 4 替换为以下步骤:

对于 Nashorn

  1. 创建 nashorn_repl.clj,其中包含包含以下内容的 jar 文件:

    (require 'cljs.repl)
    (require 'cljs.repl.nashorn)
    
    (cljs.repl/repl (cljs.repl.nashorn/repl-env))
    
  2. 使用 java -cp cljs.jar clojure.main nashorn_repl.clj 执行。这应该打开 repl,如下所示:

    $ java -cp cljs.jar clojure.main nashorn_repl.clj
    To quit, type: :cljs/quit
    ClojureScript:cljs.user> (+ 1 2)
    3
    

犀牛版

  1. 创建 rhino_repl.clj,其中包含包含以下内容的 jar 文件:

    (require 'cljs.repl)
    (require 'cljs.repl.rhino)
    
    (cljs.repl/repl (cljs.repl.rhino/repl-env))
    
  2. 使用 java -cp cljs.jar clojure.main rhino_repl.clj 执行。这应该打开 repl,如下所示:

    $ java -cp cljs.jar clojure.main rhino_repl.clj
    To quit, type: :cljs/quit
    ClojureScript:cljs.user> (+ 1 2)
    3
    

关于read-eval-print-loop - 获取 clojurescript REPL 的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29123239/

相关文章:

scala - 无法使用scala的repl :javap to look at trait companion object

string - ClojureScript 中子字符串的索引

clojurescript:触摸事件和 Domina

javascript - ClojureScript core.match 中匹配 false (== undefined, null)

python - 如何重新打开文件描述符 0、1 和 2?

scala:跟踪隐含选择和其他代码魔法

scala - 如何在 Scala REPL 中回显用户输入?

algorithm - 在 clojure[script] 中,如何返回 2 个排序向量之间最近的元素

clojurescript 高级编译 - 大小

python - 在 Python 提示符处引发错误后如何获取最后一个异常对象?