gpt4 book ai didi

clojure - 将 clojure(script) 的片段编译成 javascript

转载 作者:行者123 更新时间:2023-12-04 23:41:28 24 4
gpt4 key购买 nike

我可以在 clojurescript 库中的哪个位置访问将 clojure 片段编译为 js 的函数?

我需要它在 中运行clojure (不是clojurescript)repl:

(->js '(fn [x y] (+ x y)))
=> "function(x,y){return x+y}"

最佳答案

来自 Clojure REPL 的片段编译

(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"

来自 ClojureScript REPL 的片段编译:
(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);
});

compile-str 将回调作为最后一个参数。它将使用带有键 :value 的映射调用。包含结果 JS 作为字符串或 :error与编译错误。

在这两种情况下 org.clojure/tools.reader需要在您的类路径上。

关于clojure - 将 clojure(script) 的片段编译成 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36300173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com