Così voluto fare una semplice funzione di stringa inversa in HaskellHaskell pattern matching prima sezione, centrale, e ultimo
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
Così, c'è un modo per definire un modello struttura in haskell che ha first
e last
elemento e tutti gli elementi nello middle
?
Attenzione alla dichiarazione del tipo :) Probabilmente intendevi 'swapReverse :: String -> String', o forse qualcosa di più generale come' swapReverse :: [a] -> [a] '. –
BTW, trovare l'ultimo elemento di una lista collegata è O (N). Non hai quasi mai voglia di farlo. – hugomg
La firma del tipo deve essere 'String -> String', BTW – Landei