【发布时间】:2016-01-02 07:55:10
【问题描述】:
在编写 clojure 代码时,我对何时遵循 (func coll n) 格式和 (func n coll) 格式感到困惑。
在 Clojure/核心中,
(take n coll) 被使用,而(nth coll n) 也是正确的代码。此外,还有(reduce func n coll)、(get coll n) 和(drop n coll)。
在定义这些令人困惑的函数时,参数类型的正确位置是否有任何规则/约定?还是我应该每次都输入doc 没有意义?
【问题讨论】:
-
我尝试将“配置”参数放在左边,这样可以更轻松地使用
partial。 -
@cfrick:您能否在答案中扩展您的评论?我想了解这背后的想法,我从来没有掌握过
partial的窍门,也许这会对我有所帮助。谢谢。 -
@BobJarvis,给定一个带有 n 个参数的函数
f,(partial f an-arg)返回一个带有 n-1 个参数的函数。新函数类似于f,但第一个参数已设置为an-arg。假设我有一个名为xss的序列序列,并且我想要一个类似但仅包含每个内部序列的前两个元素的新序列。我可以这样做:(map #(take 2 %) xss)或者我可以使用partial:(map (partial take 2) xss)。给partial更多的参数同样有效。像 cfrick 一样,我尝试将参数放在首位,以便于使用partial。 -
burrown,我不喜欢
nth的语法。我经常在coll的地方有一个复杂的表达式,而n通常很简单,但是它被埋在长长的call表达式的末尾,很难注意到。我也经常在take和nth之间来回切换,在 repl 处使用相同的参数,这意味着重新排列整个表达式。因此,我经常使用我定义的函数而不是nth,它只是简单地反转nth的参数。我称之为thn。
标签: clojure coding-style conventions