除了 map、filter、reduce 这些在 Clojure 核心库中的函数之外,有哪些其他常用的函数是我必须学习以提高生产力的呢?
除了 map、filter、reduce 这些在 Clojure 核心库中的函数之外,有哪些其他常用的函数是我必须学习以提高生产力的呢?
序列处理库是Clojure的重要组成部分,它使得Clojure更加典型。其核心思想是在一个数据类型上定义多个函数,而不是在少数几种类型上定义少数函数。因此,我认为学习所有序列操作函数可以带来巨大的益处。
顺便一提,for
、reductions
和iterate
也是值得特别关注的函数。
以下是我认为必不可少的几个:
inc
/ dec
- 用于循环、递归、修正off-by-one等。assoc
- 用于更新映射。comp
- 用于组合高阶函数。partial
- 用部分参数构建高阶函数。apply
- 用于将向量参数传递给函数。conj
- 用于添加到任何类型的集合中。first
/ next
- 用于从头部操作序列。seq
- 用于创建一个序列,或通过(if (seq x) ...)
测试空序列。还有一些特殊形式/宏,虽然不严格属于函数,但你也会发现它们非常重要-例如fn
、loop/recur
、cond
、and/or
、for
、doseq
、let
等。
reduce、cons、first、rest、loop/recur、fn 和 [de structuring] 是我最常用的形式。编辑:哦,还有 partition - 天啊,那是一个非常有用的函数!
do
我认为当你第一次使用Clojure时,你会一直使用“do”,这样你就可以以命令式的方式编程,以便完成任务。随着你对Clojure的了解增加,你会发现你对“do”的使用减少了。