xer ()
skipBlankLines = (<?> "whitespace") $ maybe (return ()) (const go) =<< peek
    where
    go = isBlankLine >>= \blank -> if blank then blankLine >> go else return ()
    isBlankLine = (lookAhead blankLine >> return True) P.<|> return False
    blankLine = (many space >> simpleNewline) <|> (many1 space >> eof)

simpleNewline :: L
skipBlankLines :: Lexer ()
skipBlankLines = (<?> "whitespace") $ maybe (return ()) (const go) =<< peek
    where
    go = isBlankLine >>= \blank -> if blank then blankLine >> go else return ()
    isBlankLine = (lookAhead blankLine >> return True) P.<|> return False
    blankLine = (many space >> simpleNewline) <|> (many1 space >> eof)
skipBlankLines = (<?> "whitespace") $ maybe (return ()) (const go) =<< peek
    where
    go = isBlankLine >>= \blank -> if blank then blankLine >> go else return ()
    isBlankLine = (lookAhead blankLine >> return True) P.<|> return False
    blankLine = (many space >> simpleNewline) <|> (many1 space >> eof)