
On Mon, 27 Jun 2016, Nicolas Godbout wrote:
Example use case: In a parser, the memory footprint can be reduced by collapsing all equal strings to a single instance of each string. To achieve this, one needs a way to get a previously seen string (internally, a pointer) equal to a newly parsed string. Amazingly, this is very difficult with the current "containers" library interface. One current option is to use a Map instead, e.g., 'Map String String' which stores twice as many pointers as necessary.
I think I'd prefer the (Map String String) variant to an obscure Set lookup function. I wonder whether you will later use the Map anyway, as the compiler grows and you need to attach more data to tokens. In order to make your intent clearer you might define newtype SharedToken = SharedToken String and use (Map String SharedToken).