Clojure でBrainf***インタープリターを作成しています。stdin を使用してプログラムを渡したい。ただし、後でユーザー入力のために標準入力から読み取る必要があります。
現在、私はこれをやっています:
$ cat sample_programs/hello_world.bf | lein trampoline run
私のClojureコードは、次を使用して最初の行のみを読み取っていますread-line
。
(defn -main
"Read a BF program from stdin and evaluate it."
[]
;; FIXME: only reads the first line from stdin
(eval-program (read-line)))
パイプインしたファイル内のすべての行を読み取るにはどうすればよいですか? *in*
のインスタンスのようですが、それは(1 文字)、(1 行)、および(非常に低レベルのようです)java.io.Reader
しか提供しません。.read
.readLine
read(char[] cbuf, int off, int len)