如何将字符串转换为Clojure中的函数?

Son*_*ton 9 clojure

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

(= 7  (__ 2 + 5))
Run Code Online (Sandbox Code Playgroud)

我按照规定解决了问题.但这让我感到疑惑 - 如果这个论点是作为一个字符串提供的话 - 如何才能使它工作?

(= 7  (__ "2 + 5"))
Run Code Online (Sandbox Code Playgroud)

显然我会从分裂开始,然后咀嚼结果:

(clojure.string/split "2 + 5" #"\s")
user=> ["2" "+" "5"]
Run Code Online (Sandbox Code Playgroud)

但是我如何将"+"转换为函数调用?这不起作用:

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

启蒙寻求....

Dan*_*ero 16

看看解析功能

((resolve (symbol "+")) 1 2)
Run Code Online (Sandbox Code Playgroud)