> (read-line)
""
>
などと、read-lineを実行した直後のリターンコードを読み込んでしまう。
となると、
On Lispの、
Figure 4.7: I/O functions.
readlist
の実装が暗礁に乗り上げる。
> (read-line)a b c
"a b c"
>
などとして、出来たことにしても良いけど、どうにか回避することに挑戦する。
とりあえず、readは動作するので、最初だけreadで読み込んで文字列に変換すれば良い。
つまり、
(write-to-string (read) write)これに、(read-line)の結果をつなげるんだけど、
単純に、
(string-append (write-to-string (read) write) (read-line))は、Gaucheでは働くけど、Schemeは評価の順番が不定だから、他の処理系では、動かない可能性がある。
そこで、もう少し、工夫して、
(let ((str (write-to-string) (read) write))) (string-append str (read-line)))これで、readlistは、準備OK
0 コメント:
コメントを投稿