有几次我发现我有一组相互关联的函数,而我如何自然地将它们放在文件中最终会与它们的依赖项发生冲突(即函数 1 依赖于函数 2,但在函数 1 之上)。当我编写代码时,我通常会继续评估顶级表达式,并且只会评估整个文件以刷新对 refs 或诸如此类的依赖关系。我经常发现,我最终会遇到依赖冲突,最终不得不处理一堆函数。
在我知道的其他语言中,一旦你声明了一个函数,它就会在幕后“提升”,就好像它出现在其他任何东西之前一样。这样您就不必担心代码中事物的顺序,并且可以将函数视为代码的模块化位。正是缺少这个功能让我一直在 clojure 中苦苦挣扎。难道我做错了什么?与其说是一件大事,不如说是一件小事,这是你习惯于关注的事情吗?