除了 map、filter、reduce 之外,clojure 核心中的许多其他功能,还有哪些是我必须学习才能提高生产力的下一组最有用/常用的功能?
7 回答
如果您转到4clojure 问题页面并搜索“核心功能”,您会发现 4clojure 团队认为有用的一堆。仅举几例:
- 通过...分组
- 清楚的
- 减少
- 频率
- 分割
- 合并
- 交错
- 介入
备忘单很有用:http ://clojure.org/cheatsheet ,阅读时间不会很长。
序列处理库对我来说是 Clojure Clojurish 的主要组成部分。这个想法是在单一数据类型上拥有多个函数,而不是在几个类型上拥有几个函数。所以我想说学习所有的序列操作函数会有很大的好处。
ps: 为for
, reductions
, 和iterate
您的 map、filter 和 reduce 列表涵盖了一些重要内容,因此添加到该列表可能会重复您已经知道的内容。
Clojure 的优势之一是同步。我将开始编写示例代码来学习如何使用这些同步结构、引用、代理和原子。许多 Clojure 书籍都涵盖了它。我知道Clojure in Action很好地涵盖了这些内容。
我会使用地图,虽然我不是专门指一个函数,而是为什么地图一般以及多方法都很好。
最后,我会解释为什么你有时确实需要使用 loop .. recur。我在过去 1 年多的时间里得到的建议非常中肯。绝对必要时使用它。
没有一些我会很难生活的东西:
inc
/dec
- for 循环、递归、非一修复等。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] 是我最常用的形式。编辑:哦,分区-天哪,这是一个有用的功能!
做
我认为当您第一次使用 Clojure 时,您将一直使用“do”,这样您就可以完成工作,因为它可以让您以命令式的方式进行编程。随着您对 Clojure 的了解增加,您会发现您对“do”的使用减少了