ace = (<?> "whitespace") $ do
    indentEnabled <- isJust <$> peek
    let spaceParsers' = if indentEnabled then spaceParsers else simpleNewline:spaceParsers
    choice spaceParsers'
    where
    spaceParsers = [ void $ oneOf " \t" --TODO maybe more inline whitespace
                   , void $ string "\\\n"
                   , comment
                   ]

newline :: Lexer (
space :: Lexer ()
space = (<?> "whitespace") $ do
    indentEnabled <- isJust <$> peek
    let spaceParsers' = if indentEnabled then spaceParsers else simpleNewline:spaceParsers
    choice spaceParsers'
    where
    spaceParsers = [ void $ oneOf " \t" --TODO maybe more inline whitespace
                   , void $ string "\\\n"
                   , comment
                   ]
space = (<?> "whitespace") $ do
    indentEnabled <- isJust <$> peek
    let spaceParsers' = if indentEnabled then spaceParsers else simpleNewline:spaceParsers
    choice spaceParsers'
    where
    spaceParsers = [ void $ oneOf " \t" --TODO maybe more inline whitespace
                   , void $ string "\\\n"
                   , comment
                   ]