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
by

ClojureScript中这个功能的用例是什么?或者为什么你希望在Clojure中加入这个功能?

by
用例可能是在跨平台/方言代码中编写:CLJ/CLJS/babashka

通常,我只尝试暴露函数,而不是实现细节/你需要使用互操作来获取的东西。有一些程序(包括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:: 2月27日,下午2:34
为什么这个不是在JVM上的clojure.core中?
cljs.user=> (source dispatch-fn)
(defn dispatch-fn)
  "给出一个多方法,返回其dispatch-fn。"
  [multifn] (-dispatch-fn multifn))
/cc @wilkerlucio
:point_up
2条回复
alexmiller   9个月前
添加一个问题,这似乎是一个合理的期望
我这样问是因为,虽然这个问题的投票数不少,但我发现在CLJS中很少使用这个方法,在CLJ代码中查找这个字段的次数也很少,大多是较为高级的使用场景,所以这个问题似乎并不是特别重要。
以下是一些为什么要在核心中使用此方法的背景信息:https://blog.michielborkent.nl/using-clojure-spec-alpha-with-babashka.html
这将允许其他Clojure实现用自己的核心函数实现和替换使用,而不是在其他几个几乎没有再使用的命名空间中暴露该功能。
...