Chciałem więc zrobić prostą funkcję ciąg wsteczny w HaskellHaskell wzorzec dopasowania pierwszy, środkowy odcinek, a ostatni
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
Więc czy jest jakiś sposób, aby zdefiniować strukturę, w Haskell, który ma first
i last
element i wszystkie elementy w middle
?
Uważaj na deklarację typu :) Prawdopodobnie chodziło o 'swapReverse :: String -> String', a może o coś bardziej ogólnego jak' swapReverse :: [a] -> [a] '. –
BTW, znalezienie ostatniego elementu połączonej listy to O (N). Prawie nigdy nie chcesz tego robić. – hugomg
Podpis typu musi być "String -> String', BTW – Landei