我的项目结构如下:
|- core.clj
|- dialogs.clj
|- dialogs/
|- name_dialog.clj
name_dialog
依赖于 core
,而 core
应该需要 name_dialog
。因此我的依赖关系如下:
core.clj
(ns ddsl.core
(:gen-class)
(:require [clojure.xml :refer :all]
[ddsl.dialogs :refer :all]))
dialogs.clj
(ns ddsl.dialogs
(:require [ddsl.core :refer :all]))
(load "dialogs/name_dialog")
name_dialog.clj
(in-ns 'ddsl.dialogs)
当我尝试运行程序时,出现以下错误:
Cyclic load dependency: [ /ddsl/core ]->/ddsl/dialogs->[ /ddsl/core ]
请告诉我如何重构我的项目(我是Clojure的新手)。
core
需要其他命名空间? - Leecore
从 Clojure "模板" 生成 XML,并具有-main
函数,该函数接收模板名称作为参数,例如 "name-dialog" 并从中生成 XML。 - lichcore
中依赖于其他命名空间的函数应该被移动到那些命名空间中。core
命名空间不应该依赖于其他模块。 - Leedialog_name
)并生成xml的函数,因此无论如何都应该加载为模块吗?(defn -main [dialog] (emit (eval (symbol dialog))))
- lich