标签: clojurescript

启动连接到 lein 项目模板的 cljs nREPL

我使用以下命令创建了一个 ClojureScript 项目:

lein new re-frame my-project

然后我使用 Cursive 在 IntelliJ 中打开它。在终端中输入 后lein dev,它会提示我以下消息:

shadow-cljs - HTTP server available at http://localhost:8280
shadow-cljs - server version: 2.8.52 running at http://localhost:9630
shadow-cljs - nREPL server started on port 8777
shadow-cljs - watching build :app
[:app] Configuring build.
[:app] Compiling ...
[:app] Build completed. (203 files, 1 compiled, 0 warnings, 3.65s)
Run Code Online (Sandbox Code Playgroud)

我可以使用将我定向到 REPL 的链接打开服务器,但不能打开连接到浏览器的 nREPL。按照他们的文档,我输入shadow-cljs clj-repl到另一个终端,该终端打开一个 REPL,但没有连接到我的浏览器或项目。如果我输入(js/alert "hi m8")REPL,它会响应:

Syntax error compiling at (REPL:2:1).
No …
Run Code Online (Sandbox Code Playgroud)

clojure clojurescript cursive shadow-cljs

1
推荐指数
1
解决办法
685
查看次数

如何在 clojurescript 中使用 javascript 承诺?

我的 js 承诺有问题:我正在尝试转换此 js 代码:

stripe.createToken(card).then(function(result) {
    if (result.error) {
      // Inform the customer that there was an error.
      var errorElement = document.getElementById('card-errors');
      errorElement.textContent = result.error.message;
    } else {
      // Send the token to your server.
      stripeTokenHandler(result.token);
    }
Run Code Online (Sandbox Code Playgroud)

我有以下内容:

(go
     (let [result (<!
                   (.createToken stripe @(subscribe [:card-element]))
                   )]
       (prn "result is" result)
       ;; (if (.-error result)
       ;;   (.textContent (js/document.getElementById "card-errors") (.-message .-error result))
       ;;   (prn "response is" (js/stripeTokenHandler (.-token result)))
       ;;   )
       )
    )
Run Code Online (Sandbox Code Playgroud)

但我得到“没有为类型对象定义协议方法 ReadPort.take![object Promise]”

如何在 cljs 中执行 …

interop clojurescript

1
推荐指数
1
解决办法
953
查看次数

重新定义单词移动停止字符,以便在 Vim/GVim 中编辑 Clojure 代码

在 Vim/GVim 中编辑 Clojure 代码时,我经常使用wword-motion 命令(以及它的表兄弟b向后的 word-motion)。然而,在默认的 Clojure 配置中,Vim/GVim 会忽略常见的单词分隔符,例如连字符、斜杠和句点。以下 Clojure 符号显示了所有三个:

clojure.core/select-keys
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们希望wb字运动命令在任何非字母字符处停止。

如何修改默认的 Vim 配置以识别 Clojure 中的这些单词边界?

vim clojure macvim clojurescript

1
推荐指数
1
解决办法
151
查看次数

为什么这个用 Clojure、ClojureSript、Figwheel、Lein 构建的 Web 应用程序在源代码版本之后没有在浏览器上更新?

我正在观看 Eric Normand 的前端课程/教程。\n课程是付费私人服务。

\n

但是,他正在使用 GitHub 上的公共存储库,this\none

\n

克隆并执行后lein fig-dev,该项目似乎已成功构建:

\n
2022-08-25 13:46:47.988:INFO::main: Logging initialized @3006ms to org.eclipse.jetty.util.log.StdErrLog\n[Figwheel] Validating figwheel-main.edn\n[Figwheel] figwheel-main.edn is valid \\(\xe3\x83\x84)/\n[Figwheel] Compiling build dev to "resources/public/js/compiled/app.js"\n[Figwheel] Successfully compiled build dev to "resources/public/js/compiled/app.js" in 1.33 seconds.\n[Figwheel] Watching paths: ("src") to compile build - dev\n[Figwheel:SEVERE] /private/var/folders/fh/7d_1drwd2ps3zw03j9ftkqs80000gn/T/jna1153974339277798676.tmp: dlopen(/private/var/folders/fh/7d_1drwd2ps3zw03j9ftkqs80000gn/T/jna1153974339277798676.tmp, 0x0001): tried: \'/private/var/folders/fh/7d_1drwd2ps3zw03j9ftkqs80000gn/T/jna1153974339277798676.tmp\' (fat file, but missing compatible architecture (have (unknown,i386,x86_64), need (arm64e)))\n[Figwheel] Starting Server at http://localhost:3449\n[Figwheel] Starting REPL\nPrompt will show when REPL connects to evaluation …
Run Code Online (Sandbox Code Playgroud)

clojure leiningen clojurescript figwheel

1
推荐指数
1
解决办法
277
查看次数

非常基本的语法荧光笔

我期待制作一个非常基本的sytax荧光笔.我希望能指出正确的方向.我知道有很多伟大的项目已经做到这一点(Codemirror,rainbow.js等),但我希望得到如何创建它们的帮助,也许是一个简单的例子,使用Javascript(或clojurescript).

这些项目是否使用解析语言(使用像PEG.js这样的东西?)理想情况下我想用类似的东西而不是正则表达式来解析语言,但是一旦你定义了语言,将它变成语法荧光笔?当然,在每一个按键上你都不会重新解析整个tex并应用格式化?那么做一些简单的事情最好的方法是什么?跟踪当前光标位置,只看前面和后面这么多字符?某种状态机?

任何帮助都会很棒!谢谢

javascript css syntax-highlighting codemirror clojurescript

0
推荐指数
1
解决办法
383
查看次数

写一个替换宏的参数

假设我们有一个_在任意位置的列表.例如:(a b c _ e f).我试图写一个宏其中,对于这样一个列表,找到_并用另一个值(比方说,替换它z)(a b c z e f).

对此最好的方法是什么?

clojure clojurescript

0
推荐指数
1
解决办法
82
查看次数

通过将字符串转换为符号来提取原子中键的值

我有一个原子:

{:answer1 "yes", :answer2 "no", :answer3 "maybe"}
Run Code Online (Sandbox Code Playgroud)

我希望能够使用变量x来提取值:answerx.

在我的REPL中,当我测试如何附加到字符串然后转换为符号时,这适用:

(symbol (str ":answer" 2))
Run Code Online (Sandbox Code Playgroud)

结果是:answer2.但是,当我尝试在原子中执行此操作时,我得到的结果是nil:

(get @answers-atom (symbol (str ":answer" 2)))
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?

clojure clojurescript

0
推荐指数
1
解决办法
249
查看次数

用值替换列表中的空字符串

如果我有一个清单

("foo" "bar" "" "baz")
Run Code Online (Sandbox Code Playgroud)

我需要改变任何""到"商业",有什么好办法去做?

clojure clojurescript

0
推荐指数
2
解决办法
125
查看次数

python减少实现会产生什么开销?

我有一些python脚本花费的时间超出了我的预期,所以我开始调查并发现了python性能的一些惊喜.大多数情况下,它似乎围绕着reduce,但我不明白为什么.

为了实验,我写了以下两个模块:

py.py

from functools import reduce

def mysum(n):
    return reduce(lambda acc, x: acc + x, range(n + 1))

n = int(1e8)
print(mysum(n))
Run Code Online (Sandbox Code Playgroud)

clj.clj

(defn mysum [n]
  (reduce + (range (inc n))))

(println (mysum 1e8))
Run Code Online (Sandbox Code Playgroud)

我比较了他们的表现time:

?  ~ time python py.py
5000000050000000
python py.py  21.90s user 0.41s system 95% cpu 23.344 total
?  ~ time lumo clj.clj
5000000050000000
lumo clj.clj  2.44s user 0.13s system 102% cpu 2.519 total
Run Code Online (Sandbox Code Playgroud)

看起来python的执行速度比clojure实现慢10倍.但这与我的预期相反.

即使使用JVM运行clj文件,这会导致很大的启动成本,python也会超过一英里:

?  ~ time clj clj.clj …
Run Code Online (Sandbox Code Playgroud)

python clojure python-3.x clojurescript

0
推荐指数
1
解决办法
158
查看次数

Clojure - 如果value为true,则创建一个键数组

我对clojure完全不熟悉.

我有一个JSON,如: { "1": true, "2": false, "3": true, "4": false }

我想在clojure中创建一个值为true的键数组.在这个例子中,数组应该是["1", "3"].

请帮我.任何帮助,将不胜感激.

clojure clojurescript

0
推荐指数
1
解决办法
159
查看次数