Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将clojure(脚本)片段编译为javascript_Clojure_Clojurescript - Fatal编程技术网

将clojure(脚本)片段编译为javascript

将clojure(脚本)片段编译为javascript,clojure,clojurescript,Clojure,Clojurescript,在clojurescript库中的什么地方可以访问将clojure片段编译成js的函数 我需要在clojure(非clojurescript)回复中运行此命令: 从Clojure REPL编译代码段 从ClojureScript REPL编译代码段: 将回调作为最后一个参数。它将通过一个映射调用,该映射可以是一个键:value,其中包含结果JS作为字符串,也可以是一个带有编译错误的:error 在这两种情况下,类路径上都需要org.clojure/tools.reader。有一个轻量级的替代方案

在clojurescript库中的什么地方可以访问将clojure片段编译成js的函数

我需要在clojure(非clojurescript)回复中运行此命令:

从Clojure REPL编译代码段 从ClojureScript REPL编译代码段: 将回调作为最后一个参数。它将通过一个映射调用,该映射可以是一个键
:value
,其中包含结果JS作为字符串,也可以是一个带有编译错误的
:error


在这两种情况下,类路径上都需要
org.clojure/tools.reader

有一个轻量级的替代方案:它创建问题所要求的正确输出


这里可以看到一些例子:

哦,太棒了!非常感谢。我看到了这个函数,但不知道空状态。您将如何定义特定的命名空间(而不是
cljs$user
)等等。。。我的错。。。除了clojure repl之外,我还需要相同的函数。略加编辑question@zcaudate我已经用Clojure Repl的编译更新了答案为什么
(analyze env'(fn[ab](+ab))
返回
?我想解释得很清楚:):“fn语句会被删除,没有任何用途,如果被命名会污染范围”。当它们不在语句中时,它们是不可操作的,可以忽略。
(->js '(fn [x y] (+ x y)))
=> "function(x,y){return x+y}" 
(require '[cljs.analyzer.api :refer [analyze empty-env]])
(require '[cljs.compiler.api :refer [emit]])

(let [ast (analyze (empty-env) '(defn plus [a b] (+ a b)))]
  (emit ast))

;; result
"cljs.user.plus = (function cljs$user$plus(a,b){\nreturn (a + b);\n});\n"
(require '[cljs.js :refer [empty-state compile-str]])

(compile-str (empty-state) "(defn add [x y] (+ x y))" #(println (:value %)))

;; Output (manually formatted for easier reading)
cljs.user.add = (function cljs$user$add(x,y){
  return (x + y);
});