我一直在研究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)
启蒙寻求....