murex :: Lexer [Pos Token]
murex = between initialize finalize (many token)
    where
    initialize = (<?> "") $ do
        push 0 *> skipBlankLines <* pop
        P.optional (char '\n')
        push =<< length <$> many (char ' ')
    finalize = do
        stackNull >>= flip when (fail "expecting dedent") 
        skipBlankLines >> eof
murex :: Lexer [Pos Token]
murex = between initialize finalize (many token)
    where
    initialize = (<?> "") $ do
        push 0 *> skipBlankLines <* pop
        P.optional (char '\n')
        push =<< length <$> many (char ' ')
    finalize = do
        stackNull >>= flip when (fail "expecting dedent") 
        skipBlankLines >> eof
murex = between initialize finalize (many token)
    where
    initialize = (<?> "") $ do
        push 0 *> skipBlankLines <* pop
        P.optional (char '\n')
        push =<< length <$> many (char ' ')
    finalize = do
        stackNull >>= flip when (fail "expecting dedent") 
        skipBlankLines >> eof