id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc	planetversion	pltversion
31	make sets sequences	dherman	dherman	"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)
}}}
"	enhancement	new	major		dherman/set.plt					
