clojure - 如何在 Clojure 中将字符串转换为函数?

标签 clojure

我一直在研究Clojure question 135 Infix Calculator ,基本上是一个简化的中缀到前缀算术计算器:

(= 7  (__ 2 + 5))

我按照指定解决了问题。但这让我想知道 - 如果参数作为字符串提供怎么办 - 我如何让它工作?

(= 7  (__ "2 + 5"))

显然我会从分割开始,然后仔细研究结果:

(clojure.string/split "2 + 5" #"\s")
user=> ["2" "+" "5"]

但是我如何将“+”转换为函数调用?这是行不通的:

("+" 2 5)
user=> java.lang.ClassCastException: java.lang.String cannot be 
cast to clojure.lang.IFn <snip>

寻求启迪......

最佳答案

查看解析函数

((resolve (symbol "+")) 1 2)

关于clojure - 如何在 Clojure 中将字符串转换为函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10967851/

相关文章:

scala - Haskell、Scala、Clojure,如何选择高性能模式匹配和并发

clojure - 在 clojure 中连接/合并单个向量中的向量

clojure - 引用困惑

database - 在ring网站中使用atom作为内存数据库

clojure - 如何在 leiningen repl 中预加载 clojure 文件?

java.text.SimpleDateFormat#parse 在 Scala 和 Clojure 之间有不同的行为

clojure - Clojure 中 str 和 print-str 之间的区别/关系

java - 可以修改示例以返回值吗?

clojure - 有键和值的向量时创建 map

clojure - 检查多方法在 Clojure 中是否有特定的调度