clojure是否支持按返回类型重载方法?

clojure是否支持按返回类型重载方法?,clojure,overloading,Clojure,Overloading,当我偶然发现时,我正在读一些风暴代码。它们的名称和参数都相同,但返回类型似乎不同。稍微简化的代码是: (defn- foo "Returns list of sets of things" [^Bar xs] (->> ... (map set))) (defn- foo "Returns mutable set of sets of things" [^Bar xs] (->> ... (map set) (H

当我偶然发现时,我正在读一些风暴代码。它们的名称和参数都相同,但返回类型似乎不同。稍微简化的代码是:

(defn- foo "Returns list of sets of things"
  [^Bar xs]
  (->> ...
       (map set)))

(defn- foo "Returns mutable set of sets of things"
  [^Bar xs]
  (->> ...
       (map set)
       (HashSet.)
       ))

有人能解释一下这里发生了什么吗

第二个定义覆盖了第一个定义。Clojure不关心类型。

第二个定义覆盖了第一个定义。Clojure不喜欢类型。

Hmmm,想知道为什么这样写:所以[对我来说]作者不太可能忘记删除前一个。@om nom nom,我不知道原作者的意图,但我可以告诉你发生了什么。:]@在基于REPL的开发中,这种事情很容易被忽视。你可以随心所欲地重新定义变量,编译器不会发出任何警告,所以一旦你写了第二个版本,很容易忘记第一个版本。嗯,想知道为什么这样写:所以[对我来说]作者不太可能忘记删除前一个。@om nom nom,我不知道原作者的意图,但我可以告诉你发生了什么@在基于REPL的开发中,这种事情很容易被忽视。你可以将变量重新定义到你的心里,编译器不会发出任何警告,所以一旦你写了第二个版本,你很容易忘记第一个版本已经存在。