Haskell platform proposal: split package
Simon Hengel
sol at typeful.net
Sun Jul 22 10:10:18 CEST 2012
Hi,
not sure if that adds anything to the discussion, but I share Roman's
concerns.
On Sat, Jul 21, 2012 at 08:43:05PM -0400, Brent Yorgey wrote:
> On Sat, Jul 21, 2012 at 11:40:19PM +0300, Roman Cheplyaka wrote:
> > * Brent Yorgey <byorgey at seas.upenn.edu> [2012-07-21 08:09:09-0400]
> > > On Sat, Jul 21, 2012 at 09:24:16AM +0300, Roman Cheplyaka wrote:
> > > >
> > > > Regarding the API: I'm a bit concerned with presence of synonyms there
> > > > (e.g. chunk = splitEvery, sepBy = splitOn etc.) IMO it makes it harder
> > > > to learn the API (which is not small even without the synonyms), and
> > > > especially to read other people's code if their preferences in naming
> > > > differ from yours.
> > >
> > > Would your concern be addressed by Gábor's suggestion to group
> > > synonyms together in the documentation?
> >
> > This could be a minor improvement (I haven't checked how these
> > grouped functions look like in haddock), but I don't see the need for
> > synonyms in the first place. Could you maybe explain the motivation
> > behind them?
>
> Certainly. The idea is to provide synonyms whenever there are
> multiple common names in use, as well as a consistent system of names
> within the package itself. The goal is for new users to be able to
> get started using the library as quickly as possible -- users will
> usually come looking for some particular function and they may already
> have an idea about what it might be called.
This was at least not true for me. When I first looked at split, I was
utterly confused about all those synonyms. This was one of two reasons
why I decided not to use it (having an other dependency was the other).
> To be concrete, the split package has three sets of synonyms:
>
> * splitOn / sepBy / unintercalate
>
> Here 'splitOn' is an internally consistent name, which matches
> with the naming scheme used in the rest of the package. 'sepBy'
> is a name from parsec and other parser combinator libraries;
> 'unintercalate' emphasizes that this function is right inverse to
> 'intercalate'.
>
> * splitOneOf / sepByOneOf
>
> * splitEvery / chunk
>
> Again, 'splitEvery' matches the internal naming scheme; 'chunk' is
> a name commonly used for this function within the community.
> I don't see much harm in this (modulo making the documentation
> clearer, which I plan to do).
Making the documentation clearer would mitigate Roman's first concern
(learning the API). But it would not address the second concern
(reading/understanding other peoples code), which to me is even more
important.
> And I really don't want to *remove* existing names because that would
> force a major version bump and potentially break any code depending on
> split.
I think this particular point can be addressed by either deprecating
synonyms; or by removing the Haddock comment from synonyms and use:
{-# OPTIONS_HADDOCK prune #-}
That way the synonyms do not show up in documentation, but are still
exported.
Cheers,
Simon
More information about the Libraries
mailing list