data Token
= Number
| Operator
deriving (Eq, Show)
swap :: [Token] -> [Token]
swap (x@Number:y@Operator:xs) = y : x : swap xs
swap (x:xs) = x : swap xs
swap [] = []
main
= putStrLn $ show $ swap
[Number
, Number
, Number
, Operator
, Operator
, Number
, Operator
, Number
]-- Output: [Number,Number,Operator,Number,Operator,Operator,Number,Number]
ZGF0YSBUb2tlbiA9IE51bWJlciB8IE9wZXJhdG9yIGRlcml2aW5nIChFcSwgU2hvdykKCnN3YXAgOjogW1Rva2VuXSAtPiBbVG9rZW5dCnN3YXAgKHhATnVtYmVyOnlAT3BlcmF0b3I6eHMpID0geSA6IHggOiBzd2FwIHhzCnN3YXAgKHg6eHMpID0geCA6IHN3YXAgeHMKc3dhcCBbXSA9IFtdCgoKbWFpbiA9IHB1dFN0ckxuICQgc2hvdyAkIHN3YXAgW051bWJlciwgTnVtYmVyLCBOdW1iZXIsIE9wZXJhdG9yLCBPcGVyYXRvciwgTnVtYmVyLCBPcGVyYXRvciwgTnVtYmVyXQotLSBPdXRwdXQ6IFtOdW1iZXIsTnVtYmVyLE9wZXJhdG9yLE51bWJlcixPcGVyYXRvcixPcGVyYXRvcixOdW1iZXIsTnVtYmVyXQ==