我使用以下命令创建了一个 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) 我的 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 中执行 …
在 Vim/GVim 中编辑 Clojure 代码时,我经常使用wword-motion 命令(以及它的表兄弟b向后的 word-motion)。然而,在默认的 Clojure 配置中,Vim/GVim 会忽略常见的单词分隔符,例如连字符、斜杠和句点。以下 Clojure 符号显示了所有三个:
clojure.core/select-keys
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们希望w和b字运动命令在任何非字母字符处停止。
如何修改默认的 Vim 配置以识别 Clojure 中的这些单词边界?
我正在观看 Eric Normand 的前端课程/教程。\n课程是付费私人服务。
\n但是,他正在使用 GitHub 上的公共存储库,this\none。
\n克隆并执行后lein fig-dev,该项目似乎已成功构建:
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) 我期待制作一个非常基本的sytax荧光笔.我希望能指出正确的方向.我知道有很多伟大的项目已经做到这一点(Codemirror,rainbow.js等),但我希望得到如何创建它们的帮助,也许是一个简单的例子,使用Javascript(或clojurescript).
这些项目是否使用解析语言(使用像PEG.js这样的东西?)理想情况下我想用类似的东西而不是正则表达式来解析语言,但是一旦你定义了语言,将它变成语法荧光笔?当然,在每一个按键上你都不会重新解析整个tex并应用格式化?那么做一些简单的事情最好的方法是什么?跟踪当前光标位置,只看前面和后面这么多字符?某种状态机?
任何帮助都会很棒!谢谢
假设我们有一个_在任意位置的列表.例如:(a b c _ e f).我试图写一个宏其中,对于这样一个列表,找到_并用另一个值(比方说,替换它z)(a b c z e f).
对此最好的方法是什么?
我有一个原子:
{: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)
知道为什么会这样吗?
我有一些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) 我对clojure完全不熟悉.
我有一个JSON,如: { "1": true, "2": false, "3": true, "4": false }
我想在clojure中创建一个值为true的键数组.在这个例子中,数组应该是["1", "3"].
请帮我.任何帮助,将不胜感激.
clojurescript ×10
clojure ×8
codemirror ×1
css ×1
cursive ×1
figwheel ×1
interop ×1
javascript ×1
leiningen ×1
macvim ×1
python ×1
python-3.x ×1
shadow-cljs ×1
vim ×1