【发布时间】:2023-03-10 22:49:02
【问题描述】:
我只是在学习clojure,而且我正在碰壁。
我正在尝试将算术表达式读取为中缀字符串并在 Clojure 中对其进行处理。
例如"1 + 2" -> (+ 1 2)
我读入了“+”,然后把它变成了这样的符号:
(def plus (symbol "clojure.core" "+"))
这似乎工作正常,但是当我调用它时,我没有得到我所期望的:
user=> plus
+
user=> (plus 1 1)
1
user=> (plus 1 2)
2
user=> (plus 1 2 3)
ArityException Wrong number of args (3) passed to: Symbol clojure.lang.AFn.throwArity (AFn.java:437)
我在这里错过了什么?
【问题讨论】:
-
@yonki 原因是“+”是原始表达式中的字符串
-
这只是一个更好地学习语言的练习。重点不是把东西加在一起,重点是探索 clojure 中符号和函数是如何相互作用的。
-
抱歉删除评论,希望做出更有意义的回答。
-
Clojure first and rest 的可能重复项
标签: clojure