在Clojure中,除了基础函数外,还有哪些最重要的Clojure核心函数需要掌握才能提高生产力?

11

除了 map、filter、reduce 这些在 Clojure 核心库中的函数之外,有哪些其他常用的函数是我必须学习以提高生产力的呢?


2
不值得回答,但我非常喜欢“分区”。 - deprecated
7个回答

8
如果你访问4clojure problems页面并搜索“core-functions”,你会发现一些4clojure团队认为有用的函数,以下是其中的几个:
  • group-by
  • distinct
  • reductions
  • frequencies
  • partition
  • merge-with
  • interleave
  • interpose

3
最好的方法是去解决4clojure问题,关注一些高排名用户,然后在解决问题时,你可以看到他们使用了哪些其他函数(如果有的话)来更简洁地解决问题。这样,你不仅可以看到哪些函数是有用的,还可以看到它们何时和如何使用。 - DaoWen

6

5

序列处理库是Clojure的重要组成部分,它使得Clojure更加典型。其核心思想是在一个数据类型上定义多个函数,而不是在少数几种类型上定义少数函数。因此,我认为学习所有序列操作函数可以带来巨大的益处。

顺便一提,forreductionsiterate也是值得特别关注的函数。


1
刚刚查看了“reductions”,之前从未听说过。太酷了! - deprecated

4
你的 map、filter 和 reduce 列表已经包含了一些重要的内容,添加更多可能会重复你已经知道的。
Clojure 的一个优点是同步。我建议开始编写示例代码来学习如何使用同步构造,refs、agents 和 atoms。很多 Clojure 书籍都涵盖了这方面的内容。我知道 Clojure in Action 对此有很好的介绍。
我建议学习使用 maps,虽然我没有特别指明一个函数,但是在一般情况下,了解 maps 以及 multimethods 的好处是很重要的。
最后,我建议了解为什么有时候需要使用 loop..recur。在过去的一年多里,我得到的建议非常明确:只有在必须使用它时才使用。

3

以下是我认为必不可少的几个:

  • inc / dec - 用于循环、递归、修正off-by-one等。
  • assoc - 用于更新映射。
  • comp - 用于组合高阶函数。
  • partial - 用部分参数构建高阶函数。
  • apply - 用于将向量参数传递给函数。
  • conj - 用于添加到任何类型的集合中。
  • first / next - 用于从头部操作序列。
  • seq - 用于创建一个序列,或通过(if (seq x) ...)测试空序列。

还有一些特殊形式/宏,虽然不严格属于函数,但你也会发现它们非常重要-例如fnloop/recurcondand/orfordoseqlet 等。


1

reduce、cons、first、rest、loop/recur、fn 和 [de structuring] 是我最常用的形式。编辑:哦,还有 partition - 天啊,那是一个非常有用的函数!


0

do

我认为当你第一次使用Clojure时,你会一直使用“do”,这样你就可以以命令式的方式编程,以便完成任务。随着你对Clojure的了解增加,你会发现你对“do”的使用减少了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接