I think the dilemma with Haskell typeclasses isn&#x27;t the &quot;how&quot;, that is fairly straightforward especially for lists and maybe.<p>Instead it is the &quot;why&quot;. Groking lens was probably the first time I truly understood why type classes have laws. Unfortunately no one has found an easy path to figuring that out, it takes a long time to truly understand the mechanics of the type classes and a bit longer still to understand why they are useful.