Итак, я хотел сделать простую функцию реверса строки в Haskell
swapReverse :: String => String
swapReverse [x] = [x]
swapReverse [x,y] = [y,x]
swapReverse (x:xs:l) = -- pattern match fails here
let last = [l]
middle = xs
first = [x]
in last ++ swapReverse middle ++ first
Итак, есть ли способ определить структуру шаблона в Haskell, которая имеет first
и last
элемент и все элементы в middle
?