是否可以强迫Clojure使用原始类型而不是盒装版本?

发布于 2025-01-23 10:56:04 字数 169 浏览 8 评论 0原文

我有以下代码示例:

(type (apply / [5.0 0]))

它引发了意外的错误 - “按零”(预期行为:返回INF)

可能是由于自动盒引起的 - 可以防止它吗?

I have a following sample of code:

(type (apply / [5.0 0]))

It throws an unexpected error - "Division By Zero" (expected behavior: return Inf)

Probably, it happens due to auto-boxing - can it be prevented?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ら栖息 2025-01-30 10:56:04

假设您只想在双打上使用两个参数部门,则以下可能有效。

user=> (apply (fn d2div [n d] (double (/ (double n) (double d)))) [5.0 0.0])
##Inf

如果您走这条路径,请查看clj-cmmons/rigitive-Math

Assuming you just want to use a two argument division on doubles, the following might work.

user=> (apply (fn d2div [n d] (double (/ (double n) (double d)))) [5.0 0.0])
##Inf

If you go down this path, check out clj-cmmons/primitive-math.

左岸枫 2025-01-30 10:56:04

我不知道

user=> (defmacro myapply [func args] `(~func ~@args))
#'user/myapply
user=> (myapply / [5.0 0])
##Inf
user=> (type (myapply / [5.0 0]))
java.lang.Double

应用在Clojure中以这种不同的方式行事。

How about

user=> (defmacro myapply [func args] `(~func ~@args))
#'user/myapply
user=> (myapply / [5.0 0])
##Inf
user=> (type (myapply / [5.0 0]))
java.lang.Double

I didn't know that apply behaves in such a different manner in Clojure.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文