From 6e1ee717f77973976ddd50a63e1c77129d8ea0f7 Mon Sep 17 00:00:00 2001 From: MartyNeal Date: Thu, 19 Apr 2012 00:11:22 +0000 Subject: [PATCH] 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. --- collects/racket/stream.rkt | 15 +++++++++------ collects/tests/racket/sequence.rktl | 3 ++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/collects/racket/stream.rkt b/collects/racket/stream.rkt index a650070b3e..3e5db6f31e 100644 --- a/collects/racket/stream.rkt +++ b/collects/racket/stream.rkt @@ -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))))]))))) diff --git a/collects/tests/racket/sequence.rktl b/collects/tests/racket/sequence.rktl index 17e9b54b0a..5e6009bda4 100644 --- a/collects/tests/racket/sequence.rktl +++ b/collects/tests/racket/sequence.rktl @@ -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))