Data.Map.mapKeysMonotonic is a misleading name
Andreas Abel
andreas.abel at ifi.lmu.de
Thu Apr 4 13:19:21 UTC 2019
> I doubt this function is used very often.
You could be mistaken. Me, too. Without statistical data, I have 0
confidence in such estimates of brain 1.
https://en.wikipedia.org/wiki/Thinking,_Fast_and_Slow
On 2019-04-04 14:46, Elliot Cameron wrote:
> Well I'm proposing deprecation not removal. The deprecation could even
> live forever for all I care. It would point to the new name as well. Not
> to mention I doubt this function is used very often.
>
> On Thu, Apr 4, 2019, 2:58 AM Andreas Abel <andreas.abel at ifi.lmu.de
> <mailto:andreas.abel at ifi.lmu.de>> wrote:
>
> I am not sure this subtlety is worth the breakage and annoyance to
> users
> coming with the name change.
> If you think about it, renaming the keys while preserving the tree
> structure cannot work if two old keys map to the same new key.
>
> On 2019-04-03 17:13, Elliot Cameron wrote:
> > Yeah the clearest names seem to be really long ones:
> > mapKeysMonotonicDistinct, mapKeysInjectiveIncreasing,
> > mapKeysReferToDocs, etc.
> >
> > On Wed, Apr 3, 2019 at 11:11 AM David Feuer
> <david.feuer at gmail.com <mailto:david.feuer at gmail.com>
> > <mailto:david.feuer at gmail.com <mailto:david.feuer at gmail.com>>> wrote:
> >
> > We can't use "increasing" because mathematically that usually
> means
> > non-strictly increasing. Using "ascending" gets us in trouble
> with
> > the other functions in the module that use the word in a
> non-strict
> > sense.
> >
> > On Wed, Apr 3, 2019, 10:46 AM Elliot Cameron
> <eacameron at gmail.com <mailto:eacameron at gmail.com>
> > <mailto:eacameron at gmail.com <mailto:eacameron at gmail.com>>> wrote:
> >
> > Hello!
> >
> > In some recent analysis I ran into a subtlety that caught
> me by
> > surprise: Data.Map.mapKeysMonotonic has a misleading name.
> >
> > A monotonic function is not a strictly /increasing/ function,
> > but merely non-decreasing. However,
> |mapKeysMonotonic| requires
> > that it's mapping function be injective, which means it
> really
> > only supports /increasing/ functions.
> >
> > valid (mapKeysMonotonic (\x-> if x`elem` [1,2]then 2
> else x) (fromList [(1,"a"), (2,"b"), (3,"c")]))== False
> >
> > The docs hint at this with "This means that @f
> > <https://github.com/f>@ maps distinct original keys to
> distinct
> > resulting keys."
> >
> > However, I'd propose that we deprecate this name and
> rename to
> > something like |mapKeysIncreasing|or |mapKeysAsc| (to
> follow the
> > pattern of other *Asc functions). We should also clarify
> the docs.
> >
> >
> > From https://github.com/haskell/containers/issues/617
> > _______________________________________________
> > Libraries mailing list
> > Libraries at haskell.org <mailto:Libraries at haskell.org>
> <mailto: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
> >
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org <mailto:Libraries at haskell.org>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
More information about the Libraries
mailing list