Я создал проект Leiningen для упражнения 2 из здесь. Мой код выглядит так:
(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, чтобы вернуть свой терминал.
Любая идея, почему это происходит?