Every story and comment from the Hacker News API, in a layout borrowed from 2001.
A comment on Data munging in Perl 6 vs. Perl 5. Parent comment
Perhaps I'll clean it up using printf/format[0] later.
{-# LANGUAGE OverloadedStrings #-} import Control.Monad (liftM) import qualified Data.HashMap.Lazy as H import Data.List (sort) import Data.Maybe (fromMaybe) import Data.Monoid ((<>)) import qualified Data.Text as T import qualified Data.Text.IO as TIO import Prelude main :: IO () main = do gradesMap <- liftM (H.fromList . map ((\(x:y:_) -> (x,y)) . T.splitOn "\t") . T.lines) (TIO.readFile "example.txt") let failingNames = H.keys $ H.filter ((== F) . T.take 1) gradesMap gradeTotals = foldl (\m k -> H.insertWith (+) (T.take 1 k) 1 m) H.empty (H.elems gradesMap) TIO.putStrLn $ "Zsófia's grades: " <> fromMaybe "N/A" (H.lookup "Zsófia" gradesMap) TIO.putStrLn "List of students with a failing grade:" TIO.putStrLn $ " " <> T.intercalate ", " failingNames TIO.putStrLn "Distribution of grades by letter:" mapM_ (\(k,v) -> TIO.putStrLn $ " " <> k <> ": " <> (T.pack . show $ v) <> " students") (sort . H.toList $ gradeTotals)
There are no comments on this comment yet.
Perhaps I'll clean it up using printf/format[0] later.
0: http://hackage.haskell.org/package/formatting