Data.Map.mapKeysMonotonic is a misleading name
Elliot Cameron
eacameron at gmail.com
Thu Apr 4 12:46:32 UTC 2019
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> 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>> 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>> 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>
> > 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
> >
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20190404/2a178c29/attachment.html>
More information about the Libraries
mailing list