Así que querían hacer una función de cadena inversa simple en Haskellpatrón de Haskell juego la primera sección, media y última
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
Entonces, ¿hay una manera de definir una estructura de patrón en Haskell que tiene first
y last
elemento, y todos los elementos en el middle
?
Tenga cuidado con la declaración de tipo :) Probablemente quiso decir 'swapReverse :: String -> String', o tal vez algo más general como' swapReverse :: [a] -> [a] '. –
Por cierto, encontrar el último elemento de una lista vinculada es O (N). Casi nunca realmente quieres hacer eso. – hugomg
La firma de tipo debe ser 'String -> String', BTW – Landei