Haskell hat Tupel, die als geschrieben werden können
(a,b,c)
Dies ist jedoch nur syntaktischer Zucker für
(,,)a b c
Im Allgemeinen kann ein n- Tupel mit n-1 ,
s zwischen (
... )
und den durch Leerzeichen getrennten Elementen gebildet werden. Beispielsweise kann das 7-Tupel (1,2,3,4,5,6,7)
durch gebildet werden
(,,,,,,)1 2 3 4 5 6 7
Da Haskell keine 1-Tupel hat, können sie nicht gebildet werden. Sie sind auch nicht für leere Tupel verantwortlich.
Verschachtelte Tupel können mithilfe von Parens gebildet werden, um die Reihenfolge der Operationen zu überschreiben.
((1,2),3) == (,)((,)1 2)3
Als Teil unseres Strebens, allen syntaktischen Zucker aus Haskell zu entfernen, werde ich Sie bitten, ein Programm zu schreiben, das syntaktischen Zucker auch aus Haskells Tupeln entfernt.
Ihr Programm sollte ein Tupel, ein Array oder eine Zeichenfolge, die ein zuckerhaltiges Tupel darstellt, verwenden und eine Zeichenfolge ausgeben, die ein "zuckerfreies" Tupel darstellt. Eingabetupel enthalten immer nur positive ganze Zahlen oder andere Tupel.
Da wir hier Golf spielen, sollte Ihre Leistung kurz sein. Es sollte nicht unnötig enthalten
Räume. Leerzeichen sollten nur verwendet werden, um Argumente von Tupelfunktionen zu trennen. Sie sollten nicht nach
)
oder vor a stehen(
Klammern. Klammern sollten nur beim Bilden von Tupelfunktionen oder beim Verschachteln von Tupeln verwendet werden.
Dies ist eine Code-Golf- Frage, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
Testfälle
(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))
und (1,(2,3),4)
.