2024年Clojure现状调查!中分享您的想法。

欢迎!请参阅关于 页面获取更多有关此信息。

+1 投票
ClojureScript

如果您的代码中有1. },生成的代码是

cljs.core.into.call(null,cljs.core.PersistentQueue.EMPTY,cljs.core.PersistentVector.EMPTY)

当可生成空向量时

cljs.core.PersistentQueue.EMPTY


https://github.com/clojure/clojurescript/blob/f289ffee2270567f7976d45012a0a52c38eb6488/src/main/clojure/cljs/tagged_literals.cljc#L21

13 个答案

0 投票

评论由:colinkahn 提出

这是我尝试解决的方案。不确定测试是否正确。

0 投票

评论由:mfikes 提出

嗨,Colin。感谢您的贡献!您已经签约CA吗?我没有在这里看到您的名字

如果没有,请参阅这里

0 投票

评论由:colinkahn 提出

嗨,Mike,

今早才做,邮件里收到确认了。

0 投票
来自

评论由:mfikes 提出

很好,我会审查补丁。

0 投票
来自

评论由:mfikes 提出

嗨,Colin,

对于您的第二次测试,您是否检查的是这个吗?

(instance? PersistentQueue #queue [1 2 3])

至于实际上测试补丁,我能想到的唯一方法是检查生成的代码。查看以下命令产生的字符串

(binding [*print-fn-bodies* true] (pr-str (fn [] #queue [])))

看起来像是一个破解方法,但你可以在字符串中检查是否包含 {{PersistentVector}},如果包含,则使测试失败。

0 投票
来自

评论由:colinkahn 提出

是的,确实想检查类型。奇怪的是,我在测试报告中没有得到失败的反馈。我想知道是否有办法仅运行测试的一部分?

您认为使用 with-redefs 怎么样?

0 投票
来自

评论由:mfikes 提出

嗨,Colin,

我不知道是否有方法仅运行测试的一部分。顺便说一句,Travis CI 未能通过构建 https://travis-ci.org/mfikes/clojurescript/builds/430674720

我绝对喜欢您的 {{with-redefs}} 方法。比我之前的字符串破解方法聪明得多。 :)

0 投票
来自

评论由:colinkahn 提出

嗨,Mike,

我已更新附带的补丁。

当您执行 "lein test" 命令时,这些测试实际上不会运行,看起来 Travis 使用 jsc 运行构建和测试。我在本地进行了复现,不确定是否有命令使其更容易一些。

0 投票
来自

评论由:mfikes 提出

谢谢。我会看看修改后的补丁。这些测试通过{{script/test}}运行。更多信息请访问https://script.clojure.org/community/running-tests

0 投票

评论由:mfikes 提出

补丁1.是免费的。

基准测试:1. }

之前

基准测试使用V8 [f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))], (f), 100000000次运行,442毫秒

之后

基准测试使用V8 [f (fn [] cljs.core.PersistentQueue.EMPTY)], (f), 100000000次运行,0毫秒

0 投票

评论由:mfikes 提出

2018年9月19日下午6点12分的CLJS-2916.patch LGTM.

它通过了所有测试,包括Canary测试。根据之前的评论,性能看起来不错。

0 投票

评论由:mfikes 提出

CLJS-2916.patch已添加到Patch Tender (i)

0 投票
...