정의 또는 monoid에 따르면 이항 연산자는 연관되어야합니다. A op (B op C) == (A op B) op C
. 하스켈Haskell - Implementing Monoid 연산자가 연관되지 않은 경우 어떻게 될 것입니까?
base mconcat
definition은 다음과 같습니다
mconcat = foldr mappend mempty
나는 mconcat
기능의 구현 세부 사항을 알고 있기 때문에, 나쁜 아무것도 정의하고 함수가 연관되지 않는 경우 가짜 monoids을 사용 될까? 예를 들어 빼기 또는 나눗셈을위한 인스턴스 정의와 같습니다.
유용한 정보입니까, 아니면 요점을 놓칠 수 있습니까?
나는 그것이 충돌보다 더 나쁘다고 주장 할 것이다. 그러나 누군가가'a- (b-c) == (a-b) -c'가 보유해야한다고 주장하고 싶다면 주위에 방법이 없다고 생각합니다. –