Próbuję zrozumieć zachowanie biblioteki function groupBy (z Data.List), która służy do grupowania elementów listy za pomocą funkcji "testu równości" przekazywanej jako pierwszy argument. Podpis typ sugeruje, że test równości prostu musi mieć typHaskell: zaskakujące zachowanie "groupBy"
(a -> a -> Bool)
Jednak kiedy używam (<) jako „test równości” w GHCi 6.6, wyniki nie są, czego można oczekiwać:
ghci> groupBy (<) [1, 2, 3, 2, 4, 1, 5, 9]
[[1,2,3,2,4],[1,5,9]]
Zamiast tego będę oczekiwać serie ściśle rosnącej liczby, na przykład:
[[1,2,3],[2,4],[1,5,9]]
Czego mi brakuje?
Dziękuję. Nie zdawałem sobie sprawy, że dokumentacja wymaga, aby test równości był relacją równoważności. – Pillsy
Nie mówi, że musi to być relacja równoważności. W rzeczywistości istnieją użyteczne rzeczy, które można z nim zrobić, używając relacji nie-równoważności. na przykład http://stackoverflow.com/questions/930675/functional-paragraphs/930765#930765 – newacct