[Haskell-cafe] Utility functions
markc at chiark.greenend.org.uk
Tue Dec 28 12:54:09 EST 2004
I find myself writing things like,
splitListOn :: Eq a => a -> [a] -> [[a]]
splitListOn delimiter =
unfoldr splitter . (delimiter :)
splitter  = Nothing
splitter xs = Just (span (/= delimiter) (tail xs))
This is a sort of intersperse-opposite, in that...
myId delimiter = concat . intersperse [delimiter] . splitListBy delimiter
...myId foo turns into a sort of id for lists of the correct type.
With this, and other things, I always have a feeling that it's probably in
the standard library somewhere but I didn't notice - maybe because it's
abstracted out of recognition, just like "sequence" does Cartesian
products for us, but not so that I noticed right away.
Is there a good place to put these things - little things that feel like
that maybe they're already in the standard library, and maybe they should
be? I'd hate to be unknowingly reinventing the wheel all the time. I don't
see an obviously-appropriate page for these on the Haskell Wiki, but maybe
I missed it, or maybe I should create one.
More information about the Haskell-Cafe