请在2024年Clojure调查中分享您的想法!

欢迎!请参阅关于页面了解该系统的更多信息。

0
Clojure

这应按预期工作,例如

{{(Integer. 1N)}}

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

Rich在irc中提到要查看的方法是{{c.l.Reflector.paramArgTypeMatch}}。

11 答案

0

评论由:trptcolin

关于此如何影响位左移的问题在clojure-dev列表中提出:http://groups.google.com/group/clojure-dev/browse_thread/thread/2191cbf0048d8ca6

0

评论由:ataggart

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

0

评论由:trptcolin

此补丁会在对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
by

评论者:alexott

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

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