Clojure - (读取字符串 String 调用函数

2024-03-01

我在 clojure 文件中有以下内容:

(ns helloworld
  (:gen-class
    :main -main))

(defn hello-world-fn []
  (println "Hello World"))

(defn -main [& args]
  (eval (read-string "(hello-world-fn)")))

我正在运行它

lein run helloworld

我收到以下错误:

Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol:
 helloworld in this context, compiling:(helloworld.clj:12)

我有一种感觉,我需要做点什么ns-resolve or resolve但我还没有取得任何成功。我在主函数中尝试了以下操作:

(let [call-string  (read-string "(hello-world-fn)")
      func (resolve  (symbol (first call-string)))
      args (rest call-string)]
   (apply func args))

没有成功。

有人可以 (a) 为我指明正确的方向吗? (b) 准确解释发生这种情况时 Clojure 阅读器中发生了什么?


尝试查看您的实际名称空间-main.

(defn -main [& args]
  (prn *ns*)
  (eval (read-string "(hello-world-fn)")))

它输出#<Namespace user>在轰炸之前例外。这暗示程序的执行lein run开始于user命名空间,它显然不包含您的映射hello-world-fn象征。您需要明确限定它。

(defn -main [& args]
  (eval (read-string "(helloworld/hello-world-fn)")))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Clojure - (读取字符串 String 调用函数 的相关文章

  • Clojure 哈希映射到 xml

    我正在尝试将以下映射转换为 xml 任何具有向量值的键都需要为向量中的每个元素重复 xml 中的键 use clojure xml defn map to xml2 k v cond nil k for e a v tag e conten
  • Factor Clojure 代码在 Java 对象中设置许多不同的字段

    如何在 Java 对象中分解设置许多不同字段的代码 我想考虑因素 set employee name Chris set employee age 100 set employee salary 5000 to doseq field na
  • Clojure 的 Atom 在 Scala 中相当于什么?

    Clojure 有一个原子 http clojure org atoms for 以同步且独立的方式改变线程之间的状态 http clojure org concurrent programming 这不是 STM 的一部分 https s
  • 在 Lisp 解释过程中,“读者”的任务是什么?

    我想知道 读者 在解释 编译 Lisp 程序期间的目的 或者更准确地说 是 读者 的任务 从我刚刚完成的问题前研究来看 在我看来 读者 特别是本例中的 Clojure 可以被视为 语法预处理器 它的主要职责是读取器宏和原始形式的扩展 所以
  • 字符的序数/int/ascii 值

    在 clojure repl 中我可以这样做 gt int a 97 在闭包脚本中 我不断得到 gt int a 0 在我当前的 clojurescript 项目中 我定义了一个 var def ord a int a 当我检查发出的 ja
  • Clojure 是否有命名私有函数的约定?

    当我在 Clojure 中定义私有函数时 我通常使用 前缀作为视觉指示符 表明该函数不能在我的命名空间之外使用 例如 defn name let formatter formatter yyyy MM dd HH mm ss SSSS fo
  • JVM 语言中的嵌套函数和词法作用域是如何编译的?

    作为我的问题的具体示例 这里有一个 Python 代码片段 它应该对最广泛的人来说是可读的 并且无论如何都有 JVM 实现 def memo f cache def g args if args not in cache cache arg
  • Clojure:将哈希映射键字符串转换为关键字?

    我使用 Aleph 从 Redis 提取数据 apply hash map r hgetall key medication id 问题是这些数据返回时带有键字符串 例如 name Tylenol how instructions 当我需要
  • 为什么使用关键字或符号作为函数从地图中查找值有效?

    引用自Clojure 的乐趣 第 4 3 1 节 由于关键字是自我评估的并提供快速的相等性检查 因此它们几乎总是在映射键的上下文中使用 使用关键字作为映射键的一个同样重要的原因是它们可以用作函数 以映射作为参数来执行值查找 def popu
  • 为什么我不能将 Clojure 的 :^const 与 Java 字节数组一起使用?

    Using lein repl使用 Clojure 1 4 0 我可以定义一个 constJava 字节数组的 但我不能用它做任何事情 user gt def x byte array map byte 0 1 2 3 user x use
  • 在 Clojure 中创建映射条目

    是什么built inClojure 方式 如果有 创建单个映射条目 换句话说 我想要类似的东西 map entry key value 换句话说 结果应该或多或少等于 first key value Remarks 当然 我已经尝试过谷歌
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • 从命令行将 clojure 源代码编译为类(AOT)(不使用 lein)

    我正在尝试将 clojure 源代码编译成类文件 并仅使用命令行运行它 没有 lein 也没有 可能 回复 我有 core cljsrc hello目录 src hello core clj 这是源代码 ns hello core defn
  • 宏、Clojure 与 Common Lisp

    我和我的一些朋友正在开发一个新平台 我们想用 lisp 构建它 主要吸引力是宏 我们都使用 Common Lisp 但我想探索 Clojure 的选择 当我提出这一点时 其中一位说宏观体系 较弱 我想知道这是否属实 以及在哪些领域 就您可以
  • Leiningen 中的本地依赖项无需创建 Maven 存储库?

    我正在构建一个 Compojure Web 应用程序 我希望它使用我编写的另一个 Clojure 项目中的函数 我对 Maven 一点也不熟悉 据我所知 它的学习曲线非常陡峭 很遗憾 一切 https stackoverflow com q
  • 为什么 clojure future 会阻塞主线程?

    我有一个简单的 lein 项目 其中 main包含一个未来 def f future 42 defn main args println f 当我跑步时lein run它打印42但不返回 我不明白为什么它不返回 如何得到lein run回来
  • Clojure / Noir:强制 HTTPS,如果请求是 http:// 则重定向到 https://

    我正在尝试在我的网站上强制使用 SSL 我想要一个环形中间件 将网站重定向到与 https 相同的 URL 如果它只是 http 我编写了以下代码 但除了检查请求方案并打印它应该重定向到的 URL 之外 它实际上没有做任何事情 defn h
  • 这两个 clojure 函数之间有什么区别和问题?

    对于课程项目的一部分 我正在实现一个函数来从文件中读取一些数据并根据该文件创建图形结构 一整天我问了几个问题 结果就是这样 下面是一个可以正常工作的函数 它首先以惰性序列的形式读入文件 然后循环解析每一行并将其打印出来 defn print
  • 如何应用Clojure? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习 Clojure 我真的很喜欢它的一些功能 是时候考虑一 些真正的 宠物项目 了 我意识到我不知道如何真正做到这一点use克
  • Clojure 宏:从地图创建本地变量 [重复]

    这个问题在这里已经有答案了 我有这个示例代码 我通过迭代映射的键值对来创建变量 defmacro block bindings body let mapcat fn k v if symbol k k symbol name k v bin

随机推荐