Скажем, я хочу проанализировать строку с различными открывающими и закрывающимися скобками (я использовал круглые скобки в заголовке, потому что я считаю, что это более распространено - вопрос тем не менее тем не менее), так что я получаю все более высокие уровни, разделенные список.
Учитывая:
[hello:=[notting],[hill]][3.4(4.56676|5.67787)][the[hill[is[high]]not]]
Я хочу:
List("[hello:=[notting],[hill]]", "[3.4(4.56676|5.67787)]", "[the[hill[is[high]]not]]")
То, как я это делаю, это подсчет открывающих и закрывающих скобок и добавление в список всякий раз, когда я получаю свой счетчик 0. Однако у меня есть уродливый императивный код. Вы можете предположить, что исходная строка хорошо сформирована.
Мой вопрос: что было бы хорошим функциональным подходом к этой проблеме?
Примечания: Я подумал о том, чтобы использовать конструкцию for... yield, но при использовании счетчиков я не могу получить простой условный (у меня должны быть условия только для обновления счетчиков), и я не знаю, как я мог бы использовать эту конструкцию в этом случае.