Hi there:
My friend asked me a question, and i suppose he has found a bug of `groupBy'.
Here is the code piece:
List.groupBy (\a b - Foreign.unsafePerformIO (Text.Printf.printf \t%d = %d
?: %s\n a b (show (a=b)) return (a=b))) [7,3,5,9,6,8,3,5,4]
I have tested it in GHC 6.10.4 (Win XP) and
Could it not be a bug in
a) printf
b) unsafePerformIO
c)
d) return
e) =
f) show
g) GHC or GHCi?
All of the above?
Best wishes
Stephen
2009/12/7 L.Guo leaveye@gmail.com:
Hi there:
My friend asked me a question, and i suppose he has found a bug of `groupBy'.
Here is the code piece:
Hello Stephen,
Monday, December 7, 2009, 8:11:01 PM, you wrote:
it's just what goupBy compares with the first element of group rather
than comparing two adjancent elements. look at the trace
it's not a bug, but misunderstanding of specification :)
Could it not be a bug in
a) printf
b)
On Tue, Dec 08, 2009 at 12:45:59AM +0800, L.Guo wrote:
Hi there:
My friend asked me a question, and i suppose he has found a bug of `groupBy'.
Here is the code piece:
List.groupBy (\a b - Foreign.unsafePerformIO (Text.Printf.printf \t%d =
%d ?: %s\n a b (show (a=b)) return (a=b)))
Hi,
I have tested it in GHC 6.10.4 (Win XP) and GHC 6.8.3 (Linux), both give the
wrong result (categaried):
7 = 3 ?: False
3 = 5 ?: True
3 = 9 ?: True
3 = 6 ?: True
3 = 8 ?: True
3 = 3 ?: True
3 = 5 ?: True
3 = 4 ?: True
Hi L.Guo
Brent has replied with the right answer.
The definition of groupBy is below - the span in the where clause only
compares with the first element of the current sub-list:
-- | The 'groupBy' function is the non-overloaded version of 'group'.
groupBy :: (a - a - Bool) - [a]