2
我從here創建了練習2的Leiningen項目。我的代碼如下所示:爲什麼lein會跑?
(ns random-quotes.core
(:require [clojure.string :as str])
(:gen-class))
(defn word-count [s]
(frequencies (str/split (first (str/split s #"\n")) #"\s")))
(def quote-url "http://www.braveclojure.com/random-quote")
(def total-word-count (atom {}))
(defn update-word-count []
(future
(swap! total-word-count
(partial merge-with +)
(word-count (slurp quote-url)))))
(defn quote-word-count [n]
(doseq [quote-future (doall (repeatedly n update-word-count))]
@quote-future)
@total-word-count)
(defn -main [n]
(doseq [entry (sort-by val (quote-word-count (bigdec n)))]
(println entry)))
所有非常簡單。當我運行時,例如(-main 5)
在lein repl
中,它會按預期運行,打印並返回。但是,當我嘗試使用lein run 5
代替它時,它將運行並打印但不會退出,因此我不得不使用Ctrl + C以使我的終端恢復正常。
任何想法爲什麼發生這種情況?
@Elogent - 您在使用「future」時調用了座席。 – DaoWen
謝謝@Elogent我會編輯將其包含在答案中。 –