Ticket #31 (new enhancement)

Opened 6 years ago

make sets sequences

Reported by: dherman Owned by: dherman
Priority: major Milestone:
Component: dherman/set.plt Keywords:
Cc: Version:
Racket Version:

Description

Mark Engelberg wrote:

I thought you might be interested to know that if you add the
following to set.plt, then sets become compatible with sequences and
can be used inside of for loops.

(define (set->seq s)
  (make-do-sequence
   (lambda ()
     (let-values ([(more? next) (sequence-generate (in-hash-keys
(set-elts s)))])
       (values (λ (i) (next))
               (λ (i) (more?))
               (more?)
               (lambda (i) i)
               (lambda (v) #t)
               (lambda (i v) #t))))))

(define-struct set (elts)
  #:property prop:custom-write (lambda (set port write?)
                                 (write-hash "set" (set-elts set) port write?))
  #:property prop:sequence set->seq)
Note: See TracTickets for help on using tickets.