Secondo la definizione o un monoide l'operatore binario deve essere associativo ad es. A op (B op C) == (A op B) op C
.Haskell - Implementare Monoid cosa succede se l'operatore non è associativo
Il base mconcat
definition in Haskell è:
mconcat = foldr mappend mempty
Poiché conosco i dettagli di implementazione della funzione mconcat
, sarebbe nulla di male accada da definire e utilizzare monoidi falsi in cui la funzione non è associativo? Come per esempio la definizione di istanze per sottrazione o divisione.
Potrebbe essere utile o mi manca il punto?
Direi che è peggio di andare in crash. Ma immagino che non ci sia modo di aggirarlo se qualcuno vuole insistere sul fatto che 'a- (b-c) == (a-b) -c' dovrebbe contenere ... –