Proposal: Add split and splitWith (trac #2048)
Don Stewart
dons at galois.com
Wed Jan 16 19:37:55 EST 2008
ndmitchell:
> Hi
>
> > > One or the other should be changed so that these agree:
> > >
> > > *Main> split 'a' ""
> > > [""]
> > > *Main> Data.ByteString.Char8.split 'a' (Data.ByteString.Char8.pack "")
> > > Loading package array-0.1.0.0 ... linking ... done.
> > > Loading package bytestring-0.9.0.1 ... linking ... done.
> > > []
> > >
> > > although I couldn't say which is "right" OTTOMH...
> >
> > I hadn't noticed. In my opinion the Data.List version is more consistent,
>
> You can show you can build it up from an inductive argument, yes. But
> the Data.ByteString version probably matches what I'd expect to happen
> much more - just a gut feeling.
>
It's been a long time since I looked at bytestring's split, and it was
never meant to be the last word on how to do this. Here are some of the
properties it has,
prop_splitsplitWith c xs = split c xs == splitWith (== c) xs
prop_joinsplit c xs = intercalate [c] (split c xs) == xs
Note here the funniness of lines, complicates the properties:
prop_linessplit xs =
lines xs == split '\n' xs ++ (if last xs == '\n' then [empty] else [])
What properties relating to current List functoins does this split have?
(I don't want to block the inclusion, just want to get a sense of how it
fits into the existing code).
-- Don
More information about the Libraries
mailing list