gpt4 book ai didi

python - 动态语言中的类型类

转载 作者:太空狗 更新时间:2023-10-29 20:43:48 25 4
gpt4 key购买 nike

不得不承认,我只有Python的基础知识,目前正在学习Haskell。

我想知道类型类的概念在 Python 或 Clojure(或其他一些动态强类型语言)中是否存在/是否有意义?

换句话说,如果我有一个函数名 f,那么根据提供给 f 的运行时参数,将调用不同的函数实现(如 == 属于 Haskell 中 Eq 类型类的类型的函数)。 Clojure/Python 等动态语言中是否存在这样的概念?

最佳答案

Multimethods似乎在 Clojure 中成功了。例如,让我们定义一个 plus 函数,它添加数字但连接其他任何字符串表示形式。

(defmulti plus (fn [& xs] (every? number? xs)))

(defmethod plus true [& xs] (apply + xs))
(defmethod plus false [& xs] (apply str xs))

(plus 1 8) ;9
(plus 1 \8) ;"18"

Multimethods 是函数((ifn? plus)true),因此是您所希望的一流函数:

(let [z (partial plus 5)] (z \3)) ;"53"

关于python - 动态语言中的类型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22500267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com