On Sat, 2007-04-28 at 06:45 -0700, Stefan O'Rear wrote: > On Sat, Apr 28, 2007 at 03:49:44PM +0200, Hans van Thiel wrote: > > Hello All, > > > > The standard function groupBy of List.hs doesn't work as I expect in > > this case: > > > > groupBy (\x y -> (last x) == (last y)) ["abc", "bd","cac"] > > > > results in: > > > > [["abc"],["bd"],["cac"]] > > > > where I want: > > > > [["abc","cac"], ["bd"]] > > > > Am I doing something wrong, or is this a bug? The function is defined > > (in List.hs in the hugs Data library) as : > > > > -- | The 'groupBy' function is the non-overloaded version of 'group'. > > groupBy :: (a -> a -> Bool) -> [a] -> [[a]] > > groupBy _ [] = [] > > groupBy eq (x:xs) = (x:ys) : groupBy eq zs > > where (ys,zs) = span (eq x) xs > > You are doing something wrong. groupBy is specified to never reorder > elements. You probably want to use sortBy first. > > Stefan Ah, many thanks...
Hans _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
