在Clojure中,Clojure核心中最重要的其他功能是什么,必须掌握才能提高效率?

时间:2012-08-17 19:11:39

标签: clojure functional-programming

除了map,filter,reduce之外,还有clojure核心中的众多其他函数,它们是我必须学会提高效率的下一组最有用/最常用的函数吗?

7 个答案:

答案 0 :(得分:8)

如果你转到4clojure problems页面并搜索“核心功能”,你会发现4clojure团队认为有用的一堆。仅举几例:

  • 基由
  • 不同
  • 减少
  • 频率
  • 分区
  • 合并-与
  • 交错

答案 1 :(得分:5)

序列处理库对我来说很多是Clojure Clojurish。这个想法是在单个数据类型上具有许多函数,而不是在几种类型上的几个函数。所以我想说学习所有的序列操作函数可以带来很大的好处。

ps:forreductionsiterate

的特别喊叫

答案 2 :(得分:5)

备忘单非常有用:http://clojure.org/cheatsheet,阅读时间不长。

答案 3 :(得分:4)

你的map,filter和reduce列表涵盖了一些biggies,因此添加到该列表可能会复制你已经知道的内容。

Clojure的优势之一是同步。我将开始编写示例代码以了解如何使用这些同步构造,引用,代理和原子。很多Clojure书都涵盖了它。我知道Clojure in Action很好地涵盖了这些。

我会使用地图,虽然我没有特别提到一个函数,但是为什么地图一般都是好的以及多方法。

最后,我会解释为什么你有时需要使用循环..复发。我在过去1年多的建议非常合理。在必要的时候使用它。

答案 4 :(得分:3)

我会发现一些难以忍受的生活:

  • inc / dec - 用于循环,递归,逐个修复等。
  • assoc - 用于更新地图
  • comp - 用于撰写高阶函数
  • partial - 使用参数子集构建高阶函数
  • apply - 用于将参数向量传递给函数
  • conj - 用于添加(任何类型的)集合
  • first / next - 用于操纵头端的序列
  • seq - 用于创建序列,或使用(if (seq x) ...)
  • 测试空序列

还有一些特殊形式/宏不是严格的功能,但你也会发现非常必要 - 例如fnloop/recurcondand/orfordoseqlet等。

答案 5 :(得分:1)

reduce,cons,first,rest,loop / recur,fn和[de structuring]是我最常用的形式。编辑:哦和分区 - 上帝,这是一个有用的功能!

答案 6 :(得分:0)

DO

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