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

Reply via email to