我刚刚开始学习clojure,我正在使用Textmate编辑器编写脚本。但是,我无法弄清楚如何从终端运行它。就像我键入clj filename.clj命令但没有任何反应。我是否还需要在某处包含函数名称,因为我有一个以数字作为参数的函数。
这是我想从终端运行的代码:
(defn next-collatz-num [n]
(if (even? n)
(quot n 2)
(inc (* n 3))))
(defn collatz [n]
(take-while #(< 1 %)(iterate next-collatz-num n)))
(defn max-count-collatz [n]
(when (> n 0)
(first
(reduce
#(if (> (last %1)(last %2)) %1 %2)
[1 1] (map #(list % (count (collatz %))) (range 1 (inc n)))))))
(max-count-collatz 999999)
答案 0 :(得分:2)
虽然可以使用Clojure.jar运行单独的Clojure文件,但关于Clojure的最好的事情之一是leiningen
依赖项管理器和构建工具。创建项目很简单,对于任何不包含外部依赖项的文件而言,与直接使用java和Clojure.jar相比,这是一个巨大的改进。
答案 1 :(得分:0)
Clojure具有比在终端命令提示符下运行整个脚本更具交互性的环境。
TL; DR,安装leiningen,创建project.clj
,然后运行lean repl
。
如果你不想创建一个project.clj
,或者如果你很好奇如何做到这一点,请继续阅读...
您可以使用
启动Clojure read-eval-print-loop(REPL)交互式提示java -cp clojure-1.6.0.jar clojure.main
(下载最新的Clojure jar here)。
进入REPL后,加载代码文件:
(load-file "my-script.clj")
现在,您可以直接调用该函数:
(max-count-collatz 5)
如果它没有按照您的预期工作,请更改代码,在REPL中保存并重新加载:
(require 'my-script :reload-all)