Re: [Haskell-cafe] containers and maps

2009-08-13 Thread John Lato
On 8/13/09, Jake McArthur jake.mcart...@gmail.com wrote: Jake McArthur wrote: The monoids package offers something similar to this:    mapReduce :: (Generator c, Reducer e m) = (Elem c - e) - c - m If we take (Elem c) to be (item), (e) to be (item'), (c) to be (full), and (m) to be

Re: [Haskell-cafe] containers and maps

2009-08-13 Thread Jake McArthur
John Lato wrote: This looks to be essentially the same as the 'map' function in ListLike, and suffers from the same problem. It won't have the performance characteristics of the native map functions. Using e.g. ByteStrings, you're recreating a ByteString by snoc'ing elements. Oh, I see now

Re: [Haskell-cafe] containers and maps

2009-08-13 Thread John Lato
On Thu, Aug 13, 2009 at 1:51 PM, Jake McArthurjake.mcart...@gmail.com wrote: John Lato wrote: This might work with UVector (I intend to try it this evening); I don't know how well the fusion framework will hold up in class dictionaries. Do report back, as I am curious as well. I have just

Re: [Haskell-cafe] containers and maps

2009-08-13 Thread Edward Kmett
Yeah, my answer on the ByteString front is to make a bunch of Reducers for a Builder data type that works like the one in Data.Binary.Builder. It generates a much more suitable Reducer and can reduce Chars, Strings, Strict and Lazy UTF8-encoded Bytestrings, etc. I'm using that inside of my toy

[Haskell-cafe] containers and maps

2009-08-12 Thread John Lato
Hello, The recent discussion regarding One Container Class To Rule Them All got me to thinking about container classes and map functions. ListLike (which is really a pretty nice package, and I would like to see more people use it) provides two map functions, a regular map with type map :: (item

Re: [Haskell-cafe] containers and maps

2009-08-12 Thread Jake McArthur
The monoids package offers something similar to this: mapReduce :: (Generator c, Reducer e m) = (Elem c - e) - c - m If we take (Elem c) to be (item), (e) to be (item'), (c) to be (full), and (m) to be (full'), it's basically the same thing, and offers the same advantages as the ones you

Re: [Haskell-cafe] containers and maps

2009-08-12 Thread Jake McArthur
Jake McArthur wrote: The monoids package offers something similar to this: mapReduce :: (Generator c, Reducer e m) = (Elem c - e) - c - m If we take (Elem c) to be (item), (e) to be (item'), (c) to be (full), and (m) to be (full'), it's basically the same thing, and offers the same