Я уже был в Haskell уже два дня, и мне было интересно, какая разница между двумя определениями функций ниже:
Prelude> let swap (x1:x2:xs) = x2:x1:xs
Prelude> swap [1..5]
[2,1,3,4,5]
Prelude> let swap' (x1:x2:xs) = [x2] ++ [x1] ++ xs
Prelude> swap' [1..5]
[2,1,3,4,5]
То есть, что делает x2: x1: xs отличным от [x2] ++ [x1] ++ xs? Пожалуйста, спасибо.