Proposal for containers: Add 'lookup' function to Data.Set

Chris Wong lambda.fairy at gmail.com
Tue Jun 28 09:22:59 UTC 2016


Python uses "intern", so perhaps that can serve as the name.

(See https://docs.python.org/2/library/functions.html#intern)

On Tue, Jun 28, 2016 at 9:47 AM, David Feuer <david.feuer at gmail.com> wrote:
> +1 on the function. -1/2 on the name.
>
> On Jun 27, 2016 5:45 PM, "Nicolas Godbout" <nicolas.godbout at gmail.com>
> wrote:
>>
>>
>> WHAT
>>
>> It is proposed to add a ‘lookup' function on 'Set' in the "containers"
>> package. Feedback during the next two weeks is welcome.
>>
>> The function
>>
>> > lookup :: Ord a => a -> Set a -> Maybe a
>>
>> is almost indentical to the 'member' function but, in addition, returns
>> the value
>> stored in the set.
>>
>> WHY
>>
>> The point of this proposal is to facilitate program-wide data sharing. The
>> 'lookup'
>> function gives access to a pointer to an object already stored in a Set
>> and equal
>> to a given argument. The 'lookup' function is a natural extension to the
>> current
>> 'lookupLT', 'lookupGT', 'lookupLE' and 'lookupGE' functions, with obvious
>> semantics.
>>
>> 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.
>>
>> HOW
>>
>> The git pull request at
>> https://github.com/haskell/containers/pull/291
>> contains the straight-forward implementation of the 'lookup’ function on
>> 'Set', with test cases,
>> as a patch against the current containers master branch.
>>
>>
>> Salutations,
>> Nicolas.
>>
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>



-- 
Chris Wong (https://lambda.xyz)

"I had not the vaguest idea what this meant and when I could not
remember the words, my tutor threw the book at my head, which did not
stimulate my intellect in any way." -- Bertrand Russell


More information about the Libraries mailing list