Commentage.

This commit is contained in:
Eli Barzilay 2013-02-16 00:49:13 -05:00
parent c8ae8c419a
commit f27a48e46f

View File

@ -6,6 +6,10 @@
(provide in-syntax in-pairs in-sequence-forever sequence-lift) (provide in-syntax in-pairs in-sequence-forever sequence-lift)
;; ELI: I don't see a point in this over using `syntax->list' directly.
;; (Eg, the latter is something that can be used when the programmer
;; knows that it's a list, in contrast to this code which will just
;; throw an error.)
(define-sequence-syntax in-syntax (define-sequence-syntax in-syntax
(λ () #'(λ (e) (in-list (syntax->list e)))) (λ () #'(λ (e) (in-list (syntax->list e))))
(λ (stx) (λ (stx)
@ -13,6 +17,8 @@
[[ids (_ arg)] [[ids (_ arg)]
#'[ids (in-list (syntax->list arg))]]))) #'[ids (in-list (syntax->list arg))]])))
;; ELI: This is very specific, and indeed there are no uses of it
;; anywhere in the tree other than in TR where it came from.
(define (in-pairs seq) (define (in-pairs seq)
(make-do-sequence (make-do-sequence
(λ () (λ ()
@ -24,6 +30,8 @@
(λ _ #t) (λ _ #t)
(λ _ #t)))))) (λ _ #t))))))
;; ELI: Besides the awful name, this is the same as
;; (in-sequences seq (in-cycle (in-value val)))
(define (in-sequence-forever seq val) (define (in-sequence-forever seq val)
(make-do-sequence (make-do-sequence
(λ () (λ ()
@ -35,6 +43,7 @@
(λ _ #t) (λ _ #t)
(λ _ #t)))))) (λ _ #t))))))
;; ELI: How is this different from `sequence-map'?
(define (sequence-lift f seq) (define (sequence-lift f seq)
(make-do-sequence (make-do-sequence
(λ () (λ ()
@ -52,16 +61,19 @@
[in-slice (exact-positive-integer? any/c . -> . any)]) [in-slice (exact-positive-integer? any/c . -> . 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)) (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 k] #:when (more?)) (for/list ([i k] #:when (more?))
(get))) (get)))
values values
#f #f
#f #f
;; ELI: Use `pair?'
(λ (val) (0 . < . (length val))) (λ (val) (0 . < . (length val)))
#f)))) #f))))