我一直在学习Clojure语言,最近将REPL作为命令行计算器使用。如果能够向Clojure REPL传递参数并获得输出,我的“工作流”将大大改善,请问有人知道如何做到这一点吗?
澄清一下:例如,我想执行lein "(+ 2 2)"并返回4。
~ lein "(+ 2 2)"
'(+ 2 2)' is not a task. See 'lein help'.
我一直在学习Clojure语言,最近将REPL作为命令行计算器使用。如果能够向Clojure REPL传递参数并获得输出,我的“工作流”将大大改善,请问有人知道如何做到这一点吗?
澄清一下:例如,我想执行lein "(+ 2 2)"并返回4。
~ lein "(+ 2 2)"
'(+ 2 2)' is not a task. See 'lein help'.
lein
(Leiningen)仅适用于启动REPL,不适合此任务。如果您确实需要一种命令行界面来运行Clojure程序,则也可以实现,但需要将其编译为JAR文件并执行它,参见此篇构建CLI Clojure应用的文章。
在 REPL 中,您定义的任何 def
都是可用的。
=> (def ten 10)
...
=> (defn fact [n] (apply * (range 1 (inc n))))
...
=> (fact ten)
3628800
=>
这就是 REPL 的工作原理 - 您编写一些表达式并按下 Enter
,然后得到表达式的结果。
→ lein repl
nREPL server started on port 59650 on host 127.0.0.1
REPL-y 0.3.0
Clojure 1.5.1
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
user=> (+ 42 42)
84
user=>