Hi Romano, > I do not understand how can be used all this new stuff from the new betas. Can > someone make an useful example to me? I knows only how to use bitset in parse > rule for char, but this seems something different.
A number inserted into a bitset is turns on a bit in the position indicated by that number. Starting with zero. So if you have a set of things and to each thing you assign an integer, you could encode the presence of each thing in a bitset people: [{Romano} {Anton} {Allen} {Gabriele} {Petr}] 0 will represent Romano 1 will represent Anton etc. Now I can use a bitset to represent set membership. My first set will be people that have Italian email addresses: italian-email-address: make bitset! 8 insert italian-email-address 0 insert italian-email-address 3 I can query the set - does Petr have an Italian email address? >> find italian-email-address 4 == none No is the answer. I can create another set this time of people that have a name in which the first letter falls into the A-K range. a-k-names: make bitset! 8 repeat n [1 2 3] [insert a-k-names n] Now if I can calculate the set of people that belong to both sets. resulting-set: intersect italian-email-address a-k-names But there does not seem to a function to enumerate a bitset - so I do it myself and find that Gabriele is a member of both sets: >> repeat i subtract length? resulting-set 1 [if find resulting-set i [print i]] 3 == none Bitset lengths are always a multiple of 8. If you have 18 possible values you will need a bitset of length 24 make bitset! 24 length? returns the capacity of the bitset >> length? make bitset! 24 == 24 empty? will show you if any bits are set: >> empty? make bitset! 2000 == true Clear resets all the bits: >> clear probe insert make bitset! 8 5 make bitset! #{20} == make bitset! #{00} On my machine and with this version a bitset seems to have a maximum size of 2040. Here's a little function to represent the bits of a bitset: stringbits: func [bitset [bitset!]][ enbase/base head reverse to-string load find/tail/last form bitset { } 2 ] This nicely shows how each number is mapped to a bit position: >> stringbits insert make bitset! 8 0 == "00000001" >> stringbits insert make bitset! 8 1 == "00000010" >> stringbits insert make bitset! 8 2 == "00000100" >> stringbits insert make bitset! 8 3 == "00001000" >> stringbits insert insert make bitset! 8 0 3 == "00001001" Don't know if that was what you wanted. I found this article when looking at what bitsets can be used for. Quite interesting I thought: http://www.flipcode.com/tutorials/tut_bloomfilter.shtml Regards, Brett. -- To unsubscribe from this list, please send an email to [EMAIL PROTECTED] with "unsubscribe" in the subject, without the quotes.