
Hi Brent, thanks for your suggestions. I got further suggestions as a private e-mail and finally came up with the following solution – suggestions welcome: ==================== mapper.hs ==================== import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.IO as TLIO postFix :: TL.Text postFix = TL.pack "\t1" formatter :: TL.Text -> TL.Text formatter x = TL.append x postFix main = TLIO.interact pipeline where words = TL.words format = map formatter pipeline = TL.unlines . format . words =================================================== ==================== reducer.hs =================== import qualified Data.Text.Lazy.IO as TLIO import qualified Data.Text.Lazy as TL import qualified Data.List as L import Data.Function (on) tuppleize :: TL.Text -> (TL.Text, Int) tuppleize line = (word, num) where words = TL.words line word = head words num = read . TL.unpack $ last words group :: Eq a => [(a, b)] -> [[(a, b)]] group = L.groupBy ((==) `on` fst) summation :: Num b => [(a, b)] -> (a, b) summation ((x, y):xs) = (x, y + sum (map snd xs)) formatter :: (TL.Text, Int) -> TL.Text formatter (w, i) = TL.append w (TL.pack ('\t':show i)) main = TLIO.interact pipeline where tuples = TL.lines group_tuples = group . map tuppleize sum_tuples = map (formatter . summation) pipeline = TL.unlines . sum_tuples . group_tuples . tuples =================================================== 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. On Tue, Jul 10, 2012 at 10:19:48AM -0400, Brent Yorgey wrote:
On Thu, Jul 05, 2012 at 03:50:32PM +0200, Thomas Bach wrote:
Instead of using a chain of ($), it's generally considered better style to use a chain of (.) with a single $ at the end, like
I often find myself trying different combinations of ($), (.) or putting things in brackets, when the compiler throws an error on me. Without really knowing why things sometimes work out and sometimes don't. I find this part especially confusing! Regards, Thomas