fix(fun/wcl): Use 'eql' for byte comparisons
The fact that this works is just an implementation-specific detail. In theory, 'eq' will only compare object instance equality and not value. Thanks to /u/patrec from HN for pointing this out.
This commit is contained in:
parent
0001dfd7f6
commit
b0b52255bd
1 changed files with 4 additions and 4 deletions
|
@ -12,7 +12,7 @@
|
||||||
(iter
|
(iter
|
||||||
(for byte in-stream file-stream using #'read-byte)
|
(for byte in-stream file-stream using #'read-byte)
|
||||||
(for previous-byte previous byte)
|
(for previous-byte previous byte)
|
||||||
(for is-newline = (eq newline byte))
|
(for is-newline = (eql newline byte))
|
||||||
|
|
||||||
;; Count each byte
|
;; Count each byte
|
||||||
(sum 1 into bytes)
|
(sum 1 into bytes)
|
||||||
|
@ -22,12 +22,12 @@
|
||||||
|
|
||||||
;; Count every "word", unless the preceding character already
|
;; Count every "word", unless the preceding character already
|
||||||
;; was a space or we are at the beginning of the file.
|
;; was a space or we are at the beginning of the file.
|
||||||
(when (or (eq space previous-byte)
|
(when (or (eql space previous-byte)
|
||||||
(eq newline previous-byte)
|
(eql newline previous-byte)
|
||||||
(not previous-byte))
|
(not previous-byte))
|
||||||
(next-iteration))
|
(next-iteration))
|
||||||
|
|
||||||
(counting (or is-newline (eq space byte))
|
(counting (or is-newline (eql space byte))
|
||||||
into words)
|
into words)
|
||||||
|
|
||||||
(declare (fixnum bytes newlines words))
|
(declare (fixnum bytes newlines words))
|
||||||
|
|
Loading…
Reference in a new issue