У Haskell есть кортежи, которые можно записать как
(a,b,c)
Однако это просто синтаксический сахар для
(,,)a b c
В общем случае n- кортеж может быть сформирован с n-1 ,
s между (
..., )
за которым следуют его элементы, разделенные пробелами. Например, 7-кортеж, (1,2,3,4,5,6,7)
может быть сформирован
(,,,,,,)1 2 3 4 5 6 7
Поскольку в Haskell нет 1-кортежей, они не могут быть сформированы. Вы также не будете нести ответственность за пустые кортежи.
Вложенные кортежи могут быть сформированы с помощью паренов, чтобы переопределить порядок операций.
((1,2),3) == (,)((,)1 2)3
В рамках нашего стремления удалить весь синтаксический сахар из Haskell, я попрошу вас написать программу, которая также удаляет синтаксический сахар из кортежей Haskell.
Ваша программа должна принимать кортеж, массив или строку, представляющую сахарный кортеж, и выводить строку, представляющую кортеж «без сахара». Входные кортежи будут содержать только натуральные числа или другие кортежи.
Так как мы здесь играем в гольф, ваш результат должен быть коротким. Не должно содержать ненужных
Пространства. Пробелы должны использоваться только для разделения аргументов функций кортежа и не должны появляться после
)
или перед(
Круглые скобки. Скобки следует использовать только при формировании функций кортежей или при вложении кортежей.
Это вопрос кода игры в гольф, поэтому ответы будут оцениваться в байтах, причем меньше байтов будет лучше.
Контрольные примеры
(1,2) -> (,)1 2
(1,2,3) -> (,,)1 2 3
((1,2),3) -> (,)((,)1 2)3
(1,2,3,4) -> (,,,)1 2 3 4
(1,(2,3)) -> (,)1((,)2 3)
(10,1) -> (,)10 1
,
((1,(2,3)),4,(5,6))
и (1,(2,3),4)
.