make sequence/c preserve streamness
This commit is contained in:
parent
23ec573e51
commit
7e089f3d7f
|
@ -48,9 +48,30 @@
|
|||
#\x)
|
||||
|
||||
(test/pos-blame
|
||||
'sequence/c7
|
||||
'sequence/c8
|
||||
'(let ([s (sequence->stream (contract (sequence/c #:min-count 2 any/c) "x" 'pos 'neg))])
|
||||
(stream-first (stream-rest s)))))
|
||||
(stream-first (stream-rest s))))
|
||||
|
||||
|
||||
|
||||
(test/spec-passed/result
|
||||
'sequence/c9
|
||||
'(contract (sequence/c integer?) (list 1 2 3 4) 'pos 'neg)
|
||||
'(1 2 3 4))
|
||||
|
||||
(test/spec-passed/result
|
||||
'sequence-stream/c1
|
||||
'(stream? (contract (sequence/c integer?) (stream #f #f #f) 'pos 'neg))
|
||||
#t)
|
||||
|
||||
(test/pos-blame
|
||||
'sequence-stream/c2
|
||||
'(stream-first (contract (sequence/c integer?) (stream #f #f #f) 'pos 'neg)))
|
||||
|
||||
(test/spec-passed/result
|
||||
'sequence-stream/c3
|
||||
'(stream-first (contract (sequence/c integer?) '(1 2 3) 'pos 'neg))
|
||||
1)
|
||||
|
||||
(test/spec-passed/result
|
||||
'sequence-stream/c4
|
||||
'(stream-first (contract (sequence/c integer?) (in-range 10) 'pos 'neg))
|
||||
0))
|
||||
|
|
|
@ -200,6 +200,7 @@
|
|||
orig-blame seq
|
||||
'(expected: "a sequence" given: "~e")
|
||||
seq))
|
||||
(define result-seq
|
||||
(make-do-sequence
|
||||
(lambda ()
|
||||
(let*-values ([(more? next) (sequence-generate seq)])
|
||||
|
@ -233,4 +234,8 @@
|
|||
seq)))
|
||||
ans)
|
||||
(lambda elems #t)
|
||||
(lambda (idx . elems) #t)))))))))
|
||||
(lambda (idx . elems) #t))))))
|
||||
(cond
|
||||
[(list? seq) (sequence->list result-seq)]
|
||||
[(stream? seq) (sequence->stream result-seq)]
|
||||
[else result-seq])))))
|
||||
|
|
Loading…
Reference in New Issue
Block a user