Haskell tiene tuplas que se pueden escribir como
(a,b,c)
Sin embargo, esto es solo azúcar sintáctico para
(,,)a b c
En general, se puede formar una n tupla con n-1 ,
s entre (
... )
seguido de sus elementos separados por espacios. Por ejemplo, la 7-tupla, (1,2,3,4,5,6,7)
puede estar formada por
(,,,,,,)1 2 3 4 5 6 7
Como Haskell no tiene 1-tuplas, no se pueden formar. Tampoco será responsable de las tuplas vacías.
Las tuplas anidadas se pueden formar usando parens para anular el orden de las operaciones.
((1,2),3) == (,)((,)1 2)3
Como parte de nuestra búsqueda para eliminar todo el azúcar sintáctico de Haskell, le pediré que escriba un programa que elimine también el azúcar sintáctico de las tuplas de Haskell.
Su programa debe tomar una tupla, una matriz o una cadena que represente una tupla azucarada y debe generar una cadena que represente una tupla "sin azúcar". Las tuplas de entrada solo contendrán enteros positivos u otras tuplas.
Como estamos jugando al golf aquí, su rendimiento debe ser corto. No debe contener innecesarios
Espacios Los espacios deben usarse solo para separar los argumentos de las funciones de una tupla y no deben aparecer después de un
)
o antes de un(
Paréntesis. Los paréntesis deben usarse solo al formar funciones de tupla o al anidar tuplas.
Esta es una pregunta de código de golf , por lo que las respuestas se puntuarán en bytes con menos bytes mejor.
Casos de prueba
(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))
y (1,(2,3),4)
.