如何从终端运行clojure程序

时间:2014-10-03 02:06:02

标签: clojure

我刚刚开始学习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)

2 个答案:

答案 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)