From 1a7b71fb205886fd602e5366413096360e29e4e2 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Fri, 7 Aug 2015 14:47:43 -0500 Subject: [PATCH] Improve the implementation of `in-slice`. --- racket/collects/unstable/sequence.rkt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/racket/collects/unstable/sequence.rkt b/racket/collects/unstable/sequence.rkt index f2b6b1b4fb..afbe55d8c8 100644 --- a/racket/collects/unstable/sequence.rkt +++ b/racket/collects/unstable/sequence.rkt @@ -62,22 +62,18 @@ ;; Added by stamourv (from David Vanderson (david.vanderson at gmail.com)): (provide/contract - [in-slice (exact-positive-integer? any/c . -> . any)]) + [in-slice (exact-positive-integer? sequence? . -> . any)]) (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 (λ () (define-values (more? get) (sequence-generate seq)) (values (λ (_) - ;; ELI: Add an `in-range' - (for/list ([i k] #:when (more?)) + (for/list ([i (in-range k)] #:when (more?)) (get))) values #f #f - ;; ELI: Use `pair?' - (λ (val) (0 . < . (length val))) + (λ (val) (pair? val)) #f))))