Improve the implementation of in-slice
.
This commit is contained in:
parent
2d23ca1414
commit
1a7b71fb20
|
@ -62,22 +62,18 @@
|
||||||
;; Added by stamourv (from David Vanderson (david.vanderson at gmail.com)):
|
;; Added by stamourv (from David Vanderson (david.vanderson at gmail.com)):
|
||||||
|
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[in-slice (exact-positive-integer? any/c . -> . any)])
|
[in-slice (exact-positive-integer? sequence? . -> . any)])
|
||||||
|
|
||||||
(define (in-slice k seq)
|
(define (in-slice k seq)
|
||||||
;; ELI: what's the point of using `any/c' above and then checking it here?
|
|
||||||
(unless (sequence? seq) (raise-type-error 'in-slice "sequence" seq))
|
|
||||||
(make-do-sequence
|
(make-do-sequence
|
||||||
(λ ()
|
(λ ()
|
||||||
(define-values (more? get) (sequence-generate seq))
|
(define-values (more? get) (sequence-generate seq))
|
||||||
(values
|
(values
|
||||||
(λ (_)
|
(λ (_)
|
||||||
;; ELI: Add an `in-range'
|
(for/list ([i (in-range k)] #:when (more?))
|
||||||
(for/list ([i k] #:when (more?))
|
|
||||||
(get)))
|
(get)))
|
||||||
values
|
values
|
||||||
#f
|
#f
|
||||||
#f
|
#f
|
||||||
;; ELI: Use `pair?'
|
(λ (val) (pair? val))
|
||||||
(λ (val) (0 . < . (length val)))
|
|
||||||
#f))))
|
#f))))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user