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:
MartyNeal 2012-04-19 00:11:22 +00:00 committed by Eli Barzilay
parent 36dd749268
commit 6e1ee717f7
2 changed files with 11 additions and 7 deletions

View File

@ -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))))])))))

View File

@ -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))