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吗?我没有看到您的名字在这份清单里https://clojure.org/community/contributors

如果没有的话,请参阅https://script.clojure.org/community/contributing

0 点赞

评论者:colinkahn

迈克,您好

今天早上做的,已经在我的电子邮件中收到确认。

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 怎么样?

`(with-redefs [into (fn [& _] (throw (ex-info "Inefficiently created PersistentQueue" {})))] #queue [])`

0 点赞

评论者:mfikes

嗨Colin,

我不了解是否有办法只运行一部分测试。仅供参考,Travis CI 构建失败https://travis-ci.org/mfikes/clojurescript/builds/430674720

我绝对喜欢你的 with-redefs 方法。这比我的字符串黑客技巧聪明得多 :)

0 点赞

评论者:colinkahn

迈克,您好

我已经更新了附带的补丁。

当您运行 '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), 1亿次运行,442毫秒

之后

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

0 点赞

评论者:mfikes

2018/9/19 6:12 PM 的CLJS-2916.patch获得批准。

它通过了所有测试,包括Canary测试。考虑到之前的评论,性能看起来很好。

0 点赞

评论者:mfikes

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

0 点赞
...