On 3/3/11 7:18 PM, Jacek Generowicz wrote:
Hi Cafe,
It seems that I don't understand what groupBy does.
I expect it to group together elements as long as adjacent ones satisfy
the predicate, so I would expect ALL four of the following to give one
group of 3 and a group of 1.
Prelude> :m + Data.List
Prelude Data.List> groupBy (<) "abcb"
["abcb"]
Prelude Data.List> groupBy (<) "abca"
["abc","a"]
Prelude Data.List> groupBy (<) [1,2,3,2]
[[1,2,3,2]]
Prelude Data.List> groupBy (<) [1,2,3,1]
[[1,2,3],[1]]
What am I missing?
The behavior is that it's comparing subsequent elements to the first
element of the current chunk. I'm not sure how often that'd be a
desirable behavior compared to the one you and I would expect. Of
course, the API only specifies the behavior of groupBy on equality-like
predicates IIRC. So technically either behavior is permissible...
This should be FAQed on the documentation a bit better.
--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe