gpt4 book ai didi

clojure - 定义简化的 arity 偏函数

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:37 28 4
gpt4 key购买 nike

我有时发现在 Clojure 中定义函数的简化版本很方便,它返回一个部分函数,​​例如

(defn prefix 
([pre string]
(str pre ":" string))

([pre]
(fn [string]
(prefix pre string))))

这意味着您可以执行以下任一操作:

(prefix "foo" 78979)
=> "foo:78979"

((prefix "foo") 78979)
=> "foo:78979"

这看起来很像 Haskell,并且避免了 partial 来创建偏函数的需要。

但是在 Lisp 中它被认为是好的编码风格/API 设计吗?

最佳答案

使用 partial 创建柯里化(Currying)函数是基于 Explicit 更好 的概念(在大多数情况下 :))。而且我发现这个概念在 Clojure、Python 等动态类型语言中更适用/使用,可能是因为缺少类型签名/静态类型,所以将事情明确化更有意义。

关于clojure - 定义简化的 arity 偏函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10678798/

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