Recursion Clojure:定义和调用递归函数的同一符号的多次使用

Recursion Clojure:定义和调用递归函数的同一符号的多次使用,recursion,clojure,Recursion,Clojure,我从github中获得了一个递归函数: defn递归删除[fname] 让[func fn[func f] 当.isdirectoryF doseq[f2.listFiles] func func f2 clojure.java.io/delete-file f] func func clojure.java.io/file fname 我搞不懂这玩意儿。我需要帮助: 为什么可以将相同的符号func用于 函数绑定到的名称, fn形式的参数名称, 被调用函数和 调用的第一个参数? 还是发生了什么事

我从github中获得了一个递归函数:

defn递归删除[fname] 让[func fn[func f] 当.isdirectoryF doseq[f2.listFiles] func func f2 clojure.java.io/delete-file f] func func clojure.java.io/file fname 我搞不懂这玩意儿。我需要帮助:

为什么可以将相同的符号func用于

函数绑定到的名称, fn形式的参数名称, 被调用函数和 调用的第一个参数?
还是发生了什么事

我用手机写的,所以我道歉

这个函数似乎不必要地混淆了

funcy是一个函数,如果给定文件,则删除普通文件;如果给定目录,则将作为参数传递的函数f应用于目录中的所有文件

现在func作为f参数被赋予func,所以它递归地完成它的工作


简单:3

当我看到这段代码时,我对符号func的双重外观有类似的问题,最终意识到它只是将线程func作为一个参数来促进递归。也许一个有效的问题是:有没有更清晰、更容易理解的方法来编写这段代码?