Proposal: add 'equating' function to Data.List

Andreas Abel abela at chalmers.se
Fri Jul 18 21:11:12 UTC 2014


I am not super excited about library functions like

   comparing = (compare `on`)
   equating  = ((==) `on`)

It is rather knowledge how to use 'on', a programming pattern.  The 
problem we have to solve is how we get a user searching for

   sortOn : Ord b => (a -> b) -> [a] -> [a]

to find an explanation of the simple solution

   sortOn f = sortBy (compare `on` f)

This problem of API explanation has been discussed on this list.  Maybe 
instead of adding such simple functions to the library, one could put 
out a hoogle- and hayoo-indexed package that contains all such functions 
that could be expected to be in the library but are not since they have 
trivial implementations.

Cheers,
Andreas

P.S.: In fact, `sortOn' would be more useful than `comparing' since it 
at least saves two words.

On 18.07.2014 21:31, Henning Thielemann wrote:
> Am 18.07.2014 21:26, schrieb Frerich Raabe:
>
>> In a similiar vein as with 'comparing', I think it would be nice if
>> there was a function which encapsulates this use case, like
>>
>>    equating :: Eq b => (a -> b) -> a -> a -> Bool
>>    equating = on (==)
>>
>> such that one can write
>>
>>    groupBy (equating snd)
>
> I think it belongs to Data.Eq.
>
> I have already added it to my own Data.Eq module:
>
> http://hackage.haskell.org/package/utility-ht-0.0.10/docs/Data-Eq-HT.html
>
> this way I do not need to depend on a new GHC version in order to use it.
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/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