Clojure (строка чтения) не ждет ввода

Я пишу текстовую игру на Clojure. Я хочу, чтобы игрок набирал строки на консоли, а игра отвечала построчно.

Исследования показали мне, что (read-line) - это способ получить текстовые строки из стандартного ввода в Clojure, но у меня он не работает.

Я работаю в новом проекте Leiningen, и я добавил предложение : main в project.clj , указывающее на единственный исходный файл:

(ns textgame.core)

(defn -main [& args]
  (println "Entering -main")
;  (flush)                      ;makes no difference if flush are commented out
  (let [input (read-line)]
    (println "ECHO:" input))
;  (flush)
  (println "Exiting -main"))

с использованием lein run дает:

Entering -main
ECHO: nil
Exiting -main

Другими словами, нет возможности ввести текст в консоли для (строка чтения) для чтения.

Как мне заставить Clojure ждать ввода символов и новой строки и возвращать соответствующую строку?

(Я использую GNOME Terminal 2.32.1 в Linux Mint 11, Leiningen 1.6.1.1 в Java 1.6.0_26 Java 64-разрядная серверная виртуальная машина HotSpot ™, версия Clojure 1.2.1.)

Обновление: если я запустил lein repl , я могу (println (read-line)) , но не тогда, когда у меня есть функция -main и я запускаю ее с помощью lein run .

5
задан liwp 3 March 2012 в 09:03
поделиться