Haskell usuwanie powtarzających elementów z listy

kubusabadi
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 9 lip 2009, o 11:56
Płeć: Mężczyzna
Podziękował: 1 raz

Haskell usuwanie powtarzających elementów z listy

Post autor: kubusabadi »

Witam,
Mam za zadanie napisać dwie wersje funkcji, która usuwa powtarzające się, kolejne elementy z listy, np. [1,1,2,2,2,3,4,2,2] = [1,2,3,4,2] korzystając z foldr (pierwsza wersja) i foldl (druga wersja). Potem w miarę możliwości zapisać tą funkcję bezpunktowo. Nie mam zielonego pojęcia jak to zrobić. Bardzo proszę o pomoc.
unK
Użytkownik
Użytkownik
Posty: 26
Rejestracja: 20 sty 2009, o 17:55
Płeć: Mężczyzna
Podziękował: 6 razy
Pomógł: 3 razy

Haskell usuwanie powtarzających elementów z listy

Post autor: unK »

Kod: Zaznacz cały

unique xs = foldr step [] xs
  where step x [] = [x]
        step x xs@(x':_) =
          if x == x'
            then xs
            else x:xs
wersja z foldl analogicznie, tyle że jako wynik dostaniesz odwróconą listę.
kubusabadi
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 9 lip 2009, o 11:56
Płeć: Mężczyzna
Podziękował: 1 raz

Haskell usuwanie powtarzających elementów z listy

Post autor: kubusabadi »

Dzięki!
ODPOWIEDZ