让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引用。