Racket 拍子:2htdp不读单词/行';保留最后换行信息?

Racket 拍子:2htdp不读单词/行';保留最后换行信息?,racket,Racket,我正在读2htdp的书,我对2htdp/batch io下的read words/line函数的行为感到好奇 我创建了两个不同的文件,第一个文件在文件末尾有一个\n,第二个文件没有,如下所示: echo -ne "first line\n\nthird line\n" > file1.txt echo -ne "first line\n\nthird line" > file2.txt 如果我用读取单词/行读取每个文件,结果如下: (read-words/line "doc

我正在读2htdp的书,我对
2htdp/batch io
下的
read words/line
函数的行为感到好奇

我创建了两个不同的文件,第一个文件在文件末尾有一个
\n
,第二个文件没有,如下所示:

echo -ne "first line\n\nthird line\n" > file1.txt 
echo -ne "first line\n\nthird line" > file2.txt   
如果我用
读取单词/行
读取每个文件,结果如下:

(read-words/line "doc/book/htdp2/data/file1.txt")
  ; => '(("first" "line") () ("third" "line"))

(read-words/line "doc/book/htdp2/data/file2.txt")
  ; => '(("first" "line") () ("third" "line"))
看起来函数没有保存第一个文件中最后一个换行符的信息

这种行为是故意的吗

我正在GNU/Linux机器上运行Dr Racket 6.2.1


谢谢,

我会同意的。阅读单词/行的目的是为每一行阅读生成一个单词列表。一行通常是以换行符结尾的字符序列。文件的最后一行可以以“eof of file”结尾,而不是换行。如果您尝试此示例:

echo -ne "first line\n\nthird line\n\n" > file1.txt

我希望最后一行生成一个空的单词列表。

正如您所说,这是预期的行为。我在racket用户论坛上打开了一个帖子,他们说这是他们想要的行为,并且已经添加到文档中。