2009-02-03 13 views
5

Sto cercando di ottenere l'input della console nel mio programma Clojure, ma quando mi dà questo errore quando arriva a quella parte del programma.Clojure read-line function problema

Exception in thread "main" java.lang.ClassCastException: 
clojure.lang.LineNumberingPushbackReader cannot be cast to java.io.BufferedReader 

la funzione "leggi" funziona, ma non è quello che mi serve. Ecco il codice che sto usando.

(defn prompt-read [prompt] 
    (print (format "%s: " prompt)) 
    (flush) 
    (read-line)) 

EDIT:

Si tratta, ovviamente, solo la versione che sto utilizzando. È la versione inclusa nel codice di esempio corrente di Programming Clojure, verificherò la versione corrente e vedrò se questo è il problema.

+0

Just fyi, all'indirizzo http://github.com/stuarthalloway/programming-clojure/tree/master Halloway include una copia di clojure e clojure-contrib che sono le versioni che utilizza per il libro nella sua forma attuale. – Runevault

+0

Sì, quelli sono quelli che hanno fallito. – Rayne

risposta

3

Hmm, sembra funzionare per me. Quale versione di Clojure stai usando e come stai chiamando prompt-read? Qui è quello che sto tornando (qui goo è la mia risposta):

user=> (defn prompt-read [prompt] 
(print (format "%s: " prompt)) 
(flush) 
(read-line)) 
#'user/prompt-read 
user=> (prompt-read "foo") 
foo: goo 
"goo" 
+0

Sì, signore, questo era il problema! Grazie! – Rayne

+1

Naturalmente. Clojure sta cambiando molto ultimamente, quindi ho incontrato molti problemi simili tra la prima beta del libro e la beta corrente (ma a quanto pare questo si calmerà presto). –

1

Il problema di lettura-line è stato un errore noto. È stato risolto Aggiorna la tua versione Clojure.