parseLog :: String -> [(Int, LogMessage)]
parseLog = map (second fromJust) . filter (isJust . snd) . zip [1..] . map parseMessage . lines
parseLog :: String -> [(Int, LogMessage)]
parseLog = map (second fromJust) . filter (isJust . snd) . zip [1..] . map parseMessage . lines
parseLog = map (second fromJust) . filter (isJust . snd) . zip [1..] . map parseMessage . lines