showEx :: (String -> String) -> Idea -> String
showEx tt Idea{..} = unlines $
    [showSrcLoc loc ++ ": " ++ show severity ++ ": " ++ hint] ++
    f "Found" from ++ f "Why not" to ++
    ["Note: " ++ note | note /= ""]
    where
        f msg x | null xs = [msg ++ " remove it."]
                | otherwise = (msg ++ ":") : map ("  "++) xs
            where xs = lines $ tt x
showEx :: (String -> String) -> Idea -> String
showEx tt Idea{..} = unlines $
    [showSrcLoc loc ++ ": " ++ show severity ++ ": " ++ hint] ++
    f "Found" from ++ f "Why not" to ++
    ["Note: " ++ note | note /= ""]
    where
        f msg x | null xs = [msg ++ " remove it."]
                | otherwise = (msg ++ ":") : map ("  "++) xs
            where xs = lines $ tt x
showEx tt Idea{..} = unlines $
    [showSrcLoc loc ++ ": " ++ show severity ++ ": " ++ hint] ++
    f "Found" from ++ f "Why not" to ++
    ["Note: " ++ note | note /= ""]
    where
        f msg x | null xs = [msg ++ " remove it."]
                | otherwise = (msg ++ ":") : map ("  "++) xs
            where xs = lines $ tt x