在没有运行的情况下创建Clojure未来

Dea*_*nes 4 future clojure

我有一个基本的Clojure脚本包含:

(def test
    (future
        (loop []
            (println "Running")
            (recur))))
Run Code Online (Sandbox Code Playgroud)

但是,如果我用以下文件执行该文件:

java -cp clojure-1.3.0.jar clojure.main test.clj
Run Code Online (Sandbox Code Playgroud)

然后屏幕显示"正在运行".如何更改它以便将来运行时我想要它?

注意:我意识到这将永远运行,这只是我的问题的一个例子.

ama*_*loy 10

不立即运行的未来只是一个没有参数的函数.

所以:

(defn test []
  (println "Running")
  (recur))
Run Code Online (Sandbox Code Playgroud)

...后来...

(future (test))
Run Code Online (Sandbox Code Playgroud)

  • @DeanBarnes`recur`回到最"最近"的复发锚点.由语言定义的两个东西是重复的锚点是`loop`和`fn`,所以如果你想要重复到不同的点,或者使用不同的绑定,你只需要一个`loop`,而不是你的函数头. (2认同)