
On Sat, Jul 14, 2012 at 08:35:44PM -0400, Brent Yorgey wrote:
On Fri, Jul 13, 2012 at 06:02:02PM +0200, Thomas Bach wrote:
The reducer still throws an error when piping in an empty newline. But, I'm not sure, what a proper solution for this could be.
The problem is your 'summation' function:
summation :: Num b => [(a, b)] -> (a, b)
In fact, it is impossible to implement something with this type which works for all inputs. If you get the empty list as input, there is no way to make up a value of type 'a' in the output tuple.
It really is not that big of a deal. As I'd assume that Hadoop guarantees that at least one line will be passed to the reducer. But, just out of curiosity: wouldn't this be a case where monads are applied? Say, `Maybe'? So that the type becomes summation :: Num b => [(a, b)] -> Maybe (a, b) Or is the semantic behind monads a different one? Regards, Thomas