data Token
= Number
| Operator
deriving (Eq, Show)
swap :: [Token] -> [Token]
swap (x:y:xs) = if x == Number && y == Operator then
y : x : swap xs
else
x : swap (y : xs)
swap xs = xs
main
= putStrLn $ show $ swap
[Number
, Number
, Number
, Operator
, Operator
, Number
, Operator
, Number
]-- Output: [Number,Number,Operator,Number,Operator,Operator,Number,Number]
ZGF0YSBUb2tlbiA9IE51bWJlciB8IE9wZXJhdG9yIGRlcml2aW5nIChFcSwgU2hvdykKCnN3YXAgOjogW1Rva2VuXSAtPiBbVG9rZW5dCnN3YXAgKHg6eTp4cykgPSBpZiB4ID09IE51bWJlciAmJiB5ID09IE9wZXJhdG9yIHRoZW4KICAgICAgICAgICAgICAgICAgeSA6IHggOiBzd2FwIHhzCiAgICAgICAgICAgICAgICBlbHNlIAogICAgICAgICAgICAgICAgICB4IDogc3dhcCAoeSA6IHhzKQpzd2FwIHhzID0geHMKCgptYWluID0gcHV0U3RyTG4gJCBzaG93ICQgc3dhcCBbTnVtYmVyLCBOdW1iZXIsIE51bWJlciwgT3BlcmF0b3IsIE9wZXJhdG9yLCBOdW1iZXIsIE9wZXJhdG9yLCBOdW1iZXJdCi0tIE91dHB1dDogW051bWJlcixOdW1iZXIsT3BlcmF0b3IsTnVtYmVyLE9wZXJhdG9yLE9wZXJhdG9yLE51bWJlcixOdW1iZXJd