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 <i...@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 <c...@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 <i...@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 > >
____________________ Racket Users list: http://lists.racket-lang.org/users