That reminded me of the introduction of the Typeclassopedia ( <a href="https:&#x2F;&#x2F;wiki.haskell.org&#x2F;Typeclassopedia" rel="nofollow">https:&#x2F;&#x2F;wiki.haskell.org&#x2F;Typeclassopedia</a> ), which states one must understand the types and gain a good intuition of how the typeclasses relate to each other (and &quot;good intuition comes from hard work, not from learning the right metaphor&quot;.)