當處理二進制流時,我見過幾回這種用法:javascript
(let ((elements-read (read-sequence buffer stream))) ...)
雖然再那種情況下讀取的返回值是元素的數量,通常狀況下這只是巧合,read-sequence函數的只是返回值是這麼定義的:java
序列裏未被更新的第一個元素的索引。函數
所以,當你使用start選項調用read-sequence函數時,將其返回值做爲讀到的元素數量就是徹底錯誤的。
例如以下表達式,若是stream流裏有一個或多個能夠讀取的元素時,讀取到的元素數量是1而不是43。code
(read-sequence buffer stream :start 42 :end 43) => 43