【发布时间】:2016-01-28 13:06:19
【问题描述】:
我正在尝试从输入中读取数字并将它们打印回 Clojure,直到我读取到数字 42。确保我知道如何读取输入的非常基本的事情。取自codechef
我写了这个程序。可能不是很好的clojure。
(defn universe
[]
(let [num (line-seq (java.io.BufferedReader. *in*))]
(if (not= num 42)
(do
(println num)
(recur (universe))
)
)
)
)
我的理解是line-seq 懒惰地从给出的任何读者评估。在这种情况下是标准输入。
所以我让它成为数字。然后如果 num 不是 42 我打印它然后递归调用 Universe。但它会抛出异常
Mismatched argument count to recur, expected: 0 args, got: 1,
我见过example 并且 recur 确实需要一个参数。看着official documentation,我看不到它的语法。那么为什么会出现这个错误呢?
【问题讨论】:
标签: clojure