[Haskell-cafe] Re: Why is there no splitBy in the list module?
Brian Hulley
brianh at metamilk.com
Wed Jul 12 18:24:37 EDT 2006
Christian Maeder wrote:
> Donald Bruce Stewart schrieb:
>> Question over whether it should be:
>> splitBy (=='a') "aabbaca" == ["","","bb","c",""]
>> or
>> splitBy (=='a') "aabbaca" == ["bb","c"]
>>
>> I argue the second form is what people usually want.
>
> Yes, the second form is needed for "words", but the first form is
> needed for "lines", where one final empty element needs to be removed
> from your version!
>
> Prelude> lines "a\nb\n"
> ["a","b"]
> Prelude> lines "a\n\nb\n\n"
> ["a","","b",""]
Prelude.lines and Prelude.unlines treat '\n' as a terminator instead of a
separator. I'd argue that this is poor design, since information is lost ie
lines . unlines === id whereas unlines . lines =/= id whereas if '\n' had
been properly conceived of as a separator, the identity would hold.
So I vote for the first option ie:
splitBy (=='a') "aabbaca" == ["","","bb","c",""]
Regards, Brian.
--
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.
http://www.metamilk.com
More information about the Haskell-Cafe
mailing list