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

Andreas Abel andreas.abel at ifi.lmu.de
Tue Jun 28 09:53:55 UTC 2016


+1 for "lookup".

On 28.06.2016 11:44, Oliver Charles wrote:
> I don't really see the problem with lookup. To me, that function always
> takes a container, an index into that container, and returns the value
> under than index or fails. It just so happens that sets are indexed by
> the very values the contain, but I don't find the signature confusing.
> Sure, I might not use it very often, but it's still clear enough to me
> what it's doing.
>
> Ollie
>
>
> On Tue, 28 Jun 2016, 10:23 a.m. Chris Wong, <lambda.fairy at gmail.com
> <mailto:lambda.fairy at gmail.com>> wrote:
>
>     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
>     <mailto: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 <mailto: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 <mailto:Libraries at haskell.org>
>      >> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>      >
>      >
>      > _______________________________________________
>      > Libraries mailing list
>      > Libraries at haskell.org <mailto: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
>     _______________________________________________
>     Libraries mailing list
>     Libraries at haskell.org <mailto: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
>


-- 
Andreas Abel  <><      Du bist der geliebte Mensch.

Department of Computer Science and Engineering
Chalmers and Gothenburg University, Sweden

andreas.abel at gu.se
http://www2.tcs.ifi.lmu.de/~abel/


More information about the Libraries mailing list