Indeed, this quickly becomes obvious after writing Haskell for awhile. Lawless typeclasses just seem clunky and get less reuse compared to their lawyer&#x27;d up brethren.<p>You also can get a very slight taste of this in C#, Java, etc as well where larger interfaces seem clunky and get less reuse than smaller interfaces. In C#, if an interface has some nice properties, typically the extension methods on these interfaces with allow for a combinational explosion of generic utility functions. So this might be one way to judge the &quot;algebraicness&quot; of interfaces. You see this a lot of the LINQ collections libraries, which seem to have put some thought into laws.<p>Unfortunately in these languages you can only go so far due to the lack of higher kinded polymorphism (T&lt;A&gt; types vs just Type&lt;A&gt; types).