2024年Clojure调查问卷中分享您的想法!

欢迎!请参阅关于页面以获取更多关于如何使用本网站的信息。

0
Clojure

它应该按预期工作,例如

{{(Integer. 1N)}}

可能适用于{{BigInt}}、{{BigInteger}}和{{BigDecimal}}。

要查看的方法是{{c.l.Reflector.paramArgTypeMatch}},根据irc中的Rich的说法。

11 个回答

0

评论者:trptcolin

关于这对bit-shift-left有什么影响的clojure-dev列表上的问题: http://groups.google.com/group/clojure-dev/browse_thread/thread/2191cbf0048d8ca6

0

评论者:ataggart

CLJ-445补丁修复了此问题。

0

评论者:trptcolin

此补丁在执行测试时失败,测试内容是bit-shifting BigInt:`bit-shift-left 1N 10000`。原因在于补丁将`(BigInt, Long)`的派发从`(Object, Object)`更改为`(long, int)`。

这显然是不能应用(除非另一个更改使其可行),但我将它放在这里作为对话的开始。

0

评论者:ataggart

从邮件列表中我的评论

如果测试失败,可能是Numbers.shiftLeft(long,int被
选择而不是Numbers.shiftLeft(Object,Object)。鉴于1N是一个
对象(可以超过long的大小),方法选择
是错误的,因此补丁是无效的。


"仅仅"修改paramArgTypeMatch的建议是不够的,因为这个机制偏好一种方法而不是另一种方法在编译器中,并且不够智能,不足以做出这样的决定。

0

评论者:redinger

考虑将此从Release.next中移除 - 向Chas征求意见。

0
_评论者:cemerick_

抱歉,我觉得我对此问题的了解目前不是很深入。我最初遇到了这个问题的记录已经有一段时间了,并且是在Rich的建议下启动了这个工单。如果工单的文本将任何人引入了无果的道路,我感到很抱歉...
0

评论者:lvanderhart

关于位移动的问题不再有争议,因为已经决定位移动只为32/64位值。

仍然是一个有效问题,但根据Rich的建议已被降级。

0

评论者:alexott

原始补丁的修改版本

0

评论者:jafingerhut

亚历克斯,你介意用唯一的文件名附上它吗?我知道 JIRA 允许我们使用相同的文件名创建多个附件,我也知道我们可以通过日期和上传附件的人员的账户来区分它们,但给他们相同的名字似乎只会引起混淆。

0

评论者:alexott

将更新的补丁重命名为唯一名称

0
参考文献: https://clojure.atlassian.net/browse/CLJ-666(由 cemerick 报告)
...