Clojure (linha de leitura) retorna nulo; não solicita

Estou trabalhando no meu primeiro programa adequado de Clojure - um jogo de xadrez. Eu tenho o seguinte:

(defn human-move [board]
  (board-utils/print-board board)
  (print "Enter your move, like this: 'E7 E5' ...")
  (loop [raw-move (terminal-input)] ;;(read-line)]
    (println "I just received" raw-move)
    (if (re-matches #"[A-H][1-8]\s[A-H][1-8]" raw-move)
      (parse-move raw-move)
      (do
        (println "Invalid format! There should be a letter, number, space, letter, and final number.")
        (print "Try again: ")
        (recur (read-line))))))

Observe o local onderead-line é comentado e substituído porterminal-input. read-line estava me dando uma NullPointerException, então, para fins de diagnóstico:

(defn terminal-input []
  (println "input")
  (let [whatnot (read-line)]
    (println "received" whatnot)
    whatnot))

Então, quando ligo parahuman-move.

...
+---+---+---+---+---+---+---+---+
| P | P | P | P | P | P | P | P |
+---+---+---+---+---+---+---+---+
| R | N | B | Q | K | B | N | R |
+---+---+---+---+---+---+---+---+
Enter your move, like this: 'E7 E5' ...input
received nil
I just received nil

Nunca tive a chance de digitar algo como entrada. Nesse Java, eu começava a jogar pequenos jogos com o coletor de lixo (chamandoScanner.next(), por exemplo), mas com Clojure eu não sabia o que fazer além de colocar o(flush)

Pelo que vale a pena, isso é com SLIME.

Eu também tentei terterminal-input forneça dados fictícios e soube que aparentemente estou usandoloop/recur incorretamente. No entanto, não a investiguei completamente, desde que me distraí com oread-line problemas.

Desde já, obrigado