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

欢迎!请参阅 关于 页面以了解更多有关该平台的信息。

+13
多方法
重新标签

CLJS 有

cljs.user=> (source dispatch-fn)
(defn dispatch-fn
  "Given a multimethod, return it's dispatch-fn."
  [multifn] (-dispatch-fn multifn))

能否在 JVM 上也提供这个核心函数?

2 个答案

0

选中
0

这个用途在ClojureScript中有什么用例,或者为什么你想要它在Clojure中使用?

by
用途将是编写跨平台/方言代码:CLJ/CLJS/babashka

通常我只想公开函数,而不是实现细节或必须使用Interop才能获得的构造函数。一些程序(包括clojure.spec.alpha)使用这个字段,可以不依赖于这个字段来在用户空间中编写。但公平地说,这种情况并不多见。这可能是Clojure实现者功能的一个特性,而不是针对日常用户的实用特性,类似于为什么https://github.com/clojure/clojure/blob/7697d5da77a319077e71343f76fa204327881de4/src/clj/clojure/core.clj#L4380和destructure被公开

https://grep.app/search?q=.dispatchFn&filter[lang][0]=Clojure
by
以下是添加此功能的CLJS问题/补丁

https://clojure.atlassian.net/browse/CLJS-1144

注意,CLJS还添加了default-dispatch-val。
by
Slack内容

borkdude:: Feb 27th at 2:34 PM
为什么这个功能没有在JVM上的clojure.core中呢?
cljs.user=> (source dispatch-fn)
(defn dispatch-fn
  "给定一个多态方法,返回它的dispatch-fn。"p i=15>  [multifn] (-dispatch-fn multifn))

/cc @wilkerlucio
:point_up
2 replies
alexmiller  9 months ago
添加一个问题请求,这似乎是合理的需求
by
我想问一下,因为这个问题的投票数量不少,但我发现CLJS或CLJ代码中几乎没有使用这种方法,大部分是高级用法,所以这似乎并不特别关键。
by
以下是一个为什么在核心树中添加这个功能会很棒的一些背景信息:https://blog.michielborkent.nl/using-clojure-spec-alpha-with-babashka.html
这将允许其他Clojure实现自己的核心功能,而不是在其他几个实际上并不重用的命名空间中公开。
...