Zgodnie z definicją lub monoidem, operator dwójkowy musi być asocjacyjny, np. A op (B op C) == (A op B) op C
.Haskell - Implementacja Monoid, co się dzieje, gdy operator nie jest asocjacyjny
base mconcat
definition w Haskell jest:
mconcat = foldr mappend mempty
Ponieważ znam szczegółów prowadzonych działań mconcat
, że coś złego się stało z definiowania i używania fałszywych monoids gdzie funkcja nie jest łączne? Podobnie jak na przykład definiowanie instancji do odejmowania lub dzielenia.
Czy to może być przydatne, czy też nie rozumiem?
Powiedziałbym, że to jest gorsze niż upaść. Ale myślę, że nie da się tego obejść, jeśli ktoś chce nalegać, aby 'a- (b-c) == (a-b) -c' miał ... –