I ended up defining my own variation on foldr1 to solve this (code below), but I'd be much happier using some more standard solution:
-- A variation on foldr1 that takes an extra argument to be returned if -- the list is empty.
foldrs :: (a -> a -> a) -> a -> [a] -> a foldrs f z [] = z foldrs f _ xs = foldr1 f xs
-- Example: format a list of strings, using a comma as a seperator: mkSepStr :: [String] -> String mkSepStr xs = foldrs (\x s -> x ++ ", " ++ s) "" xs
t0 = mkSepStr [] -- ==> "" t1 = mkSepStr ["hello"] -- ==> "hello" t2 = mkSepStr ["10","20","30"] -- ==> "10, 20, 30"
What do the rest of you do to solve this particular problem? If there isn't a standard solution, perhaps something like foldrs would be a useful addition to the Prelude.
Thanks,
-antony
-- Antony Courtney Grad. Student, Dept. of Computer Science, Yale University [EMAIL PROTECTED] http://www.apocalypse.org/pub/u/antony
_______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe