clojure - 标准库函数的重载实现

标签 clojure

我目前正在学习 Clojure,并正在研究 partial 的实现。它具体实现了很多情况(其他函数也是如此),但是 apply 也适用于空列表,那么为什么 partial 的实现如此之大?为什么不是:

(defn partial [f & args]
  (fn [& inner_args] 
    (apply f (concat args inner_args))))

最佳答案

这样做是为了性能:

  • Ticket

    This patch improves performance of partial by only using apply when needed. The code structure follows that of juxt.

  • Patch

关于clojure - 标准库函数的重载实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57167003/

相关文章:

Emacs:.emacs 中延迟加载模式的最佳实践?

clojure - 如何忽略不必要的争论?

clojure - 如何组织、测试、记录和打包 Clojure 项目

rest - 在 Clojure Luminus 中写入文件的简单 API

design-patterns - Clojure 中的财务账户模式实现 : ref or agent?

clojure - 如何在 Clojure 中部分展平列表?

clojure - 函数式编程 : persistent list that handles freq. 项目更新效率高?

concurrency - 使用Clojure DataFlow编程习惯

java - 使用 clojure 生成 java bean

clojure - 将转导输出与输入合并到 HashMap 中