gpt4 book ai didi

clojure - 为什么不Clojure库尝试将唯一的名称用于通用函数名称

转载 作者:行者123 更新时间:2023-12-04 04:48:30 25 4
gpt4 key购买 nike

为什么Clojure库会重用常见的函数名称,从而迫使您执行以下操作:
命名空间是否有资格?
例如clojure.zip使用next,替换并删除
clojure核心中已经存在的内容,clojure.string中已经存在“替换”的内容。

现在,开发人员可能会对clojure.zip命名空间使用一些缩写。
因此在一个开发人员的代码中,clojure.zip/next将在另一个人的代码中(例如,w/next等)被命名为z/next,这将迫使您回头看看
namespace 缩写的实际含义是因为开发人员可以创建自己的库,该库也使用功能“next”

为什么不使用zip-next,zip-replace和zip-remove,str-replace?或类似的东西

这样,在人们的代码中将有一个一致的“命名空间限定”,并且很清楚这些功能指的是什么。

就像库之间没有大量的名称冲突一样。我通常只看到两个或三个。明确地使这些名称对于库而言如此难吗?

最佳答案

通常,在正常外观的Clojure代码中,使用use包含库要比使用require流行,因此,如果 namespace 已经传达了相同的含义,则使用较长的唯一名称就没有多大用处,因此Clojure程序员倾向于简洁而不是唯一。

代替:

(use 'liba 'libb)

(liba-foo 1 2 3)
(libb-foo 1 2 2)

人们然后可以写:
(require ['liba :as 'a] [libb :as 'b] )

(a/liba-foo 1 2 3)
(b/libb-foo 1 2 3)

这使liba-显得很愚蠢,因此:
(a/foo 1 2 3)
(b/foo 1 2 3)

关于clojure - 为什么不Clojure库尝试将唯一的名称用于通用函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11037970/

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