make sequence/c preserve streamness
This commit is contained in:
parent
23ec573e51
commit
7e089f3d7f
|
@ -48,9 +48,30 @@
|
||||||
#\x)
|
#\x)
|
||||||
|
|
||||||
(test/pos-blame
|
(test/pos-blame
|
||||||
'sequence/c7
|
'sequence/c8
|
||||||
'(let ([s (sequence->stream (contract (sequence/c #:min-count 2 any/c) "x" 'pos 'neg))])
|
'(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
|
orig-blame seq
|
||||||
'(expected: "a sequence" given: "~e")
|
'(expected: "a sequence" given: "~e")
|
||||||
seq))
|
seq))
|
||||||
|
(define result-seq
|
||||||
(make-do-sequence
|
(make-do-sequence
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(let*-values ([(more? next) (sequence-generate seq)])
|
(let*-values ([(more? next) (sequence-generate seq)])
|
||||||
|
@ -233,4 +234,8 @@
|
||||||
seq)))
|
seq)))
|
||||||
ans)
|
ans)
|
||||||
(lambda elems #t)
|
(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