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中实现它?

使用案例是编写跨平台/方言代码: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
以下是添加该功能的CLJS问题/补丁

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

注意,CLJS还增加了default-dispatch-val。
来自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代码中这种方法的使用非常少,大多数是在相当高级的使用中,所以这并不显得特别关键。
by
以下是一些为什么在核心中添加这个功能很不错的背景信息:[链接](https://blog.michielborkent.nl/using-clojure-spec-alpha-with-babashka.html)
这将允许其他Clojure实现能够实现和使用自己的核心功能,而不是在几个其他非重复使用的命名空间中暴露。
...