【问题标题】:dependencies of current namespace当前命名空间的依赖
【发布时间】:2017-03-27 21:13:25
【问题描述】:

*ns* 返回一个命名空间,而不是命名空间声明。 clojure.tools.namespace.parse.deps-from-ns-decl 需要声明。有很多方法可以从文件中读取声明。如何从当前命名空间 (*ns*) 中获取声明。如果这有帮助,这就是 REPL 的建议:

(deps-from-ns-decl *ns*)
IllegalArgumentException Don't know how to create ISeq from: clojure.lang.Namespace  clojure.lang.RT.seqFrom (RT.java:542)

【问题讨论】:

  • 你可能做不到。 ns 看起来像语法,但它实际上是一个宏,它在内部调用了 require 之类的东西。根据您的需要,可以从ns-mapns-aliases 函数中获得一些相关信息。
  • 谢谢。或许有办法找到当前命名空间的源文件?
  • 我不认为你可以从命名空间本身,因为它真的是一个非常动态的东西。但是许多函数是在源文件中定义的,当它们是关联的 var(命名空间条目)时,会有一些元数据告诉你它。所以你可以做类似(->> (vals (ns-publics *ns*)) (map (comp :file meta)) (into #{}))
  • @RussellMull 谢谢。

标签: clojure namespaces


【解决方案1】:

事实证明,提出这样的问题源于“元”命名空间工作。结合 Tawny OWL 本体定义,我的应用程序建立在 Clojure 的命名空间思想之上。为了回答我的问题,我必须使用它自己的依赖声明在应用程序中创建一种命名空间感。 Substrate 命名空间结构就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-16
    • 2019-04-26
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多