[plt-scheme] Is there a set data-type?

From: Laurent (laurent.orseau at gmail.com)
Date: Fri Feb 5 11:15:57 EST 2010

Does something like this sounds interesting and generalizable for infinite
sets?
Mixing hashes on finite sets for speed and recurrence for infinite sets in
the default case (trivial example):

(define h (make-hash))

(for-each (λ(n)(hash-set! h n #t))
         '(0 2 4 6 8)) ; could be a lot larger of course

(define (odd? n)
 (if (> n 0)
      (hash-ref h n
               ; default case:
                (λ()(odd? (- n 10))))
     #f))


> (even? 9876)
#t
> (even? 9877)
#f

Or maybe that's just a well-known fact...

Laurent

On Fri, Feb 5, 2010 at 15:42, Laurent <laurent.orseau at gmail.com> wrote:
> On Fri, Feb 5, 2010 at 15:41, Laurent <laurent.orseau at gmail.com> wrote:
>> On Fri, Feb 5, 2010 at 15:40, Laurent <laurent.orseau at gmail.com> wrote:
>>> On Fri, Feb 5, 2010 at 15:12, Matthias Felleisen <matthias at ccs.neu.edu>
wrote:
>>>>
>>>> On Feb 5, 2010, at 8:29 AM, Todd O'Bryan wrote:
>>>>
>>>>> What do people use for a set data-type? If there isn't one built-in,
>>>>> we're going to use a hash-table with #t as all the values.
>>>>
>>>> Just a tease: how would you use hashtable to represent infinite sets?
>>>
>>> From the top of my head, though that does probably not fit to the
>>> definition of an infinite set:
>>>
>>> (define towards-infinity-and-beyond (make-hash))
>>> (hash-set! towards-infinity-and-beyond 'zero '())
>>> (hash-set! 'me towards-infinity-and-beyond)
>>
>> oops, please read on the last line:
>> (hash-set! towards-infinity-and-beyond) 'me towards-infinity-and-beyond)
>
> rahhh, well you got the idea... (and I'm going to get some sleep)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20100205/c59384da/attachment.html>

Posted on the users mailing list.