Как разобрать строку и вернуть вложенный массив?

Мне нужна функция Python, которая принимает строку и возвращает массив, где каждый элемент в массиве является либо символом, либо другим массивом такого типа. Вложенные массивы помечаются во входной строке, начиная с '(' и заканчивая ')'.

Таким образом, функция будет действовать так:

1) foo("abc") == ["a", "b", "c"]
2) foo("a(b)c") == ["a", ["b"], "c"]
3) foo("a(b(c))") == ["a", ["b", ["c"]]]
4) foo("a(b(c)") == error: closing bracket is missing
5) foo("a(b))c") == error: opening bracket is missing
6) foo("a)b(c") == error: opening bracket is missing

Примечание: яя бы предпочел решение, котороечисто функциональный.

Ответы на вопрос(7)

Ваш ответ на вопрос