1

標準入力を介してチキンスキームスクリプトに渡されたすべての行を読み取り、それらをリストに入れようとしていますが、いつ終了したかを正しく判断できないようです入力。別のテスト スクリプトは、テスト(eof-object? results-of-last-read-line-call)が正当なテストであることを示しているように見えましたが、以下の例では、無限に読み続けているだけです。

以下のテストスクリプトをまとめました。私はそれを呼んでいますcat some_file.txt | this_script.scm

#! /usr/local/bin/csi -script

(define (read-from-stdin collection line)
  (if (eof-object? line) ; bad test? 
    collection
     (read-from-stdin (cons collection line) read-line)
  ) ; yes, i know atypical formatting. Done so you can see they're all there
)

(for-each print (read-from-stdin '() (read-line)))
4

2 に答える 2

-1

これに使うのが好きread-linesです。これを使用して作成したプログラムは次のとおりです。

#!/usr/local/bin/csi -script
(for-each print (read-lines))

テスト済みで動作します。csc の場合、#! 行を に置き換え(use extras)ます。

于 2016-02-25T11:35:09.563 に答える