Fixed `stream-add-between'.
Don't put an extra seperator element at the end of the stream. Brings it in-line with the list version (`add-between') and sequence version (`sequence-add-between'). Includes a test.
This commit is contained in:
parent
36dd749268
commit
6e1ee717f7
|
@ -152,12 +152,15 @@
|
|||
(make-do-stream (lambda () (force!) empty?)
|
||||
(lambda () (force!) fst)
|
||||
(lambda () (force!) rst)))]))
|
||||
|
||||
|
||||
(define (stream-add-between s e)
|
||||
(unless (stream? s)
|
||||
(raise-type-error 'stream-add-between "stream" s))
|
||||
(let loop ([s s])
|
||||
(cond
|
||||
[(stream-empty? s) empty-stream]
|
||||
[else (stream-cons (stream-first s)
|
||||
(stream-cons e (loop (stream-rest s))))])))
|
||||
(if (stream-empty? s)
|
||||
empty-stream
|
||||
(stream-cons
|
||||
(stream-first s)
|
||||
(let loop ([s (stream-rest s)])
|
||||
(cond [(stream-empty? s) empty-stream]
|
||||
[else (stream-cons e (stream-cons (stream-first s)
|
||||
(loop (stream-rest s))))])))))
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
(load-relative "loadtest.rktl")
|
||||
|
||||
(Section 'sequence)
|
||||
|
@ -108,6 +107,8 @@
|
|||
(sequence-ref (sequence-add-between (in-naturals) #t) 2))
|
||||
(test #t 'sequence-add-between
|
||||
(sequence-ref (sequence-add-between (in-naturals) #t) 3))
|
||||
(test 3 'sequence-add-between
|
||||
(sequence-length (sequence-add-between (in-range 2) #t)))
|
||||
|
||||
(arity-test sequence-count 2 2)
|
||||
(test 0 'sequence-count (sequence-count even? empty-sequence))
|
||||
|
|
Loading…
Reference in New Issue
Block a user