[racket] Problem writing and reading sets
Hash tables are primitive types, whereas sets aren't, so there's no
built-in read syntax for sets. Of course you could always write your own
reader for set values, but I recognize that may not be terribly
convenient. As for serialize/deserialize, it's not clear to me whether
that introduces significant overhead compared to just read/write. On one
hand, you do have to allocate the serialized form of the value; on the
other, the output itself is likely to be much shorter than the
human-readable version, and you will thus save on i/o costs.
Carl Eastlund
On Sat, Jul 6, 2013 at 1:21 AM, Wayne Iba <iba at westmont.edu> wrote:
> Thanks, Carl. I'd like to avoid the overhead of serialize/deserialize. I
> guess I missed that sets were in a different category than hashes with
> respect to this question. (I was assuming that since I can read in the
> write of a hash as a hash, I could do the same with sets. Is there a
> particular reason that's not the case?)
>
>
> On Fri, Jul 5, 2013 at 1:35 PM, Carl Eastlund <cce at ccs.neu.edu> wrote:
>
>> Wayne,
>>
>> You cannot read in a set. If you read in the result of print, you get
>> '(set 1 2 3), which is a list beginning with the symbol 'set, not a set.
>> Sets are a derived datatype using structs, not a primitive on recognized by
>> read and write. You can use the functions serialize and deserialize to
>> store sets, if you need to.
>>
>> --Carl
>>
>> On Fri, Jul 5, 2013 at 3:41 PM, Wayne Iba <iba at westmont.edu> wrote:
>>
>>> If I evaluate (write myset) for myset as (set 1 2 3), the format of the
>>> output is "#<set: 1 2 3>", whereas (print myset) produces "(set 1 2 3)".
>>> Naturally, I can read in the latter but not the former. From the docs, I
>>> believe the expectation is that we can rely on the output of write for
>>> reading, but not necessarily that of print.
>>>
>>> Am I missing something here or is this a problem with how racket is
>>> writing sets? (I'm using v5.3.5)
>>>
>>> Thanks,
>>> --Wayne
>>>
>>> ____________________
>>> Racket Users list:
>>> http://lists.racket-lang.org/users
>>>
>>>
>>
>
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20130706/92edaffa/attachment.html>