diff options
-rw-r--r-- | src/boot.clj | 11 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 3 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/boot.clj b/src/boot.clj index e381bfdc..04031be6 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -584,6 +584,16 @@ (print x writer) (newline))) +(defn read + ([] + (thisfn *in*)) + ([stream] + (thisfn stream :t nil)) + ([stream eof-error? eof-value] + (thisfn stream eof-error? eof-value nil)) + ([stream eof-error? eof-value recursive?] + (. clojure.lang.LispReader (read stream eof-error? eof-value recursive?)))) + (defmacro .-> [x & members] (let [gx (gensym)] `(let [~gx ~x] @@ -625,6 +635,7 @@ into-array array make-proxy new-proxy prn print newline *out* *current-namespace* .-> + read *in* time )) diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 6c26ef12..13a7fcf3 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -2699,7 +2699,7 @@ public static void main(String[] args){ } //repl - LineNumberingPushbackReader rdr = new LineNumberingPushbackReader(new InputStreamReader(System.in)); + LineNumberingPushbackReader rdr = (LineNumberingPushbackReader) RT.IN.get(); OutputStreamWriter w = (OutputStreamWriter) RT.OUT.get();//new OutputStreamWriter(System.out); Object EOF = new Object(); diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 26782f24..bdfedecc 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -21,6 +21,9 @@ public class RT{ static public Keyword T = Keyword.intern(Symbol.create(null, "t")); final static public Var OUT = Var.intern(Symbol.create("clojure", "*out*"), new OutputStreamWriter(System.out)); +final static public Var IN = + Var.intern(Symbol.create("clojure", "*in*"), + new LineNumberingPushbackReader(new InputStreamReader(System.in))); final static Keyword TAG_KEY = Keyword.intern("clojure", "tag"); //final static public Var CURRENT_MODULE = Var.intern(Symbol.create("clojure", "current-module"), |