Haskell ha tuple che possono essere scritte come
(a,b,c)
Tuttavia, questo è solo zucchero sintattico per
(,,)a b c
In generale una n tupla può essere formata con n-1 ,
s tra (
... )
seguita dai suoi elementi separati da spazi. Ad esempio la 7-tupla, (1,2,3,4,5,6,7)
può essere formata da
(,,,,,,)1 2 3 4 5 6 7
Poiché Haskell non ha 1 tupla, non possono essere formati. Non sarai inoltre ritenuto responsabile per le tuple vuote.
Le tuple nidificate possono essere formate usando le parentesi per sovrascrivere l'ordine delle operazioni.
((1,2),3) == (,)((,)1 2)3
Come parte della nostra ricerca per rimuovere tutto lo zucchero sintattico da Haskell, ti chiederò di scrivere un programma che rimuova lo zucchero sintattico anche dalle tuple di Haskell.
Il tuo programma dovrebbe prendere una tupla, un array o una stringa che rappresenta una tupla zuccherina e dovrebbe generare una stringa che rappresenta una tupla "senza zucchero". Le tuple di input conterranno sempre numeri interi positivi o altre tuple.
Dato che stiamo giocando a golf qui il tuo risultato dovrebbe essere breve. Non dovrebbe contenere inutili
Spazi. Gli spazi devono essere usati solo per separare gli argomenti di una funzione tupla e non devono apparire dopo
)
o prima di a(
Parentesi. Le parentesi devono essere utilizzate solo quando si formano funzioni di tupla o quando si annidano le tuple.
Questa è una domanda di code-golf, quindi le risposte verranno classificate in byte con meno byte migliori.
Casi test
(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))
e (1,(2,3),4)
.