让letfn来定义clojure中的本地函数?

在实践中,我应该使用letfn与let来定义本地函数吗? 那么我想同时需要本地function和本地非function的情况呢?

如果我只需要一个本地function或2 …或3 …我会让他们。 如果我需要让function和非function的组合,我只会使用一个正常的。 letfning和letting将是一个非常详细的方式来做到这一点。

但是,如果您需要通过本地function进行相互recursion,则必须以任何方式让它们一起使用。

短版:当你认为它看起来更好,当它方便时使用它们。 有没有使用任何硬性和快速的规则。 它们只是Clojure工具箱中的工具。

玩的开心!

通常情况下,使用let更简单,更方便:通过这种方式,您可以在一个表单中定义一组函数和非函数,甚至可以引用以前的定义:

 (let [f (fn [x] ....) value (reduce f some-collection) foo bar] .....) 

当你想要定义recursion引用的多个函数时, letfn才是真正需要的。 在这种情况下不会工作,因为它不支持recursion引用。

  • 在Clojure Core或Contrib中有Zip函数的等价物吗?
  • 为什么我应该使用Reify代替clojure中的代理?
  • Clojure:cons(seq)vs. conj(list)
  • Cake和Leiningen有何区别?
  • 在Clojure中做GUI的最好方法是什么?
  • Clojure:rest与下一个
  • Clojure命名的参数
  • 在Clojure的目录中列出文件
  • 使用Leiningen的JVM选项
  • 好的Clojure代码示例?
  • Ref,Var,Agent,Atom与范例之间的Clojure区别