[Haskell-cafe] A bug of groupBy implement

2009-12-07 Thread L.Guo
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

Re: [Haskell-cafe] A bug of groupBy implement

2009-12-07 Thread Stephen Tetley
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:

Re[2]: [Haskell-cafe] A bug of groupBy implement

2009-12-07 Thread Bulat Ziganshin
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)

Re: [Haskell-cafe] A bug of groupBy implement

2009-12-07 Thread Brent Yorgey
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)))

Re: [Haskell-cafe] A bug of groupBy implement

2009-12-07 Thread Matthijs Kooijman
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

Re: [Haskell-cafe] A bug of groupBy implement

2009-12-07 Thread Stephen Tetley
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]