Proposal: Make Semigroup as a superclass of Monoid

Ben Franksen ben.franksen at
Mon Apr 11 19:14:37 UTC 2016

Petr Pudlák wrote:
> František Farka [1] worked in detail on a proposal that would make such
> refactorings painless, see *Maintainable type classes for Haskell* [2]

I am just reading the paper (from 2015) for the first time and have noted at 
least one factual error. On page 6 it says:

a4 – remove a superclass constraint from an existing class This
change does not cause any problems. Some instances from be-
fore the change may be superfluous as these are no longer re-
quired by superclass constraint.

Even though it does not invalidate the essence of what the author is 
claiming (it merely weakens the argument slightly), this particular 
assessment is clearly wrong: If the superclass has methods, removing the 
superclass breaks all functions that use superclass methods and that have a 
type signature which mentions only the child class in the constraints. Such 
client code must be fixed by adding a constraint that mentions the former 
superclass to its type.

The paper has clearly not been proofread by an expert(*), so I guess its 
results should be taken with a grain of salt. Which is sad because I do like 
the ideas expressed in it.


(*) For another illustration, note the erroneous use of Semigrupoid (yes, 
with this spelling) instead of Semigroup. (A semigroupoid would be something 
like a category without the requirement of identities, I have no idea if 
such a thing has been seriously studied by anyone.)
"Make it so they have to reboot after every typo." ― Scott Adams

More information about the Libraries mailing list