
On Friday 24 September 2010 17:55:15, Christian Maeder wrote:
Am 24.09.2010 16:53, schrieb Daniel Fischer:
A good name for foo remains to be found.
prependToAll
Much better. I'm still not happy with the prepend, but insertBeforeEach isn't better and I can't think of anything convincing.
I don't like 'prepend' because prepend suggests only putting something before a list (with the given type, it should be (:)) and not changing anything inside.
If it's not to be exported from Data.List (and I don't consider it useful enough to be), maybe intersperseLoop wouldn't be too daft.
I consider it useful, because the "natural" implementation:
prependToAll s = foldr (\ x r -> s : x : r) []
seems to leak without optimization.
Another natural implementation would be prependToAll s = (s :) . intersperse s or, pointed, prependToAll s xs = s : intersperse s xs Those are of course a bit silly if intersperse is defined in terms of prependToAll. But I don't see where one would need that function, so I'm hesitating to propose changing the API of Data.List. If you have use cases, I would probably support it.
Cheers Christian
Cheers, Daniel