I don&#x27;t understand what&#x27;s unclear, lifting values to the type-level and pattern matching on those values to type classes is a standard construction [1].<p>I only claimed that operations on Maybe can be lifted to type classes, you claimed that all uses of type classes can be monomorphized (barring &quot;fancy types&quot;, of which Maybe is presumably not one).<p>Since all pattern matching functions on simple sums like Maybe can be lifted to type classes using the above translation, and given you said all such type classes can be monomorphized, therefore all uses of Maybe can be monomorphized. Alternately, your original claim could be wrong, or you can provide a counter-example to my claim that pattern matching on Maybe can be translated to type class dispatch.<p>[1] <a href="http:&#x2F;&#x2F;koerbitz.me&#x2F;posts&#x2F;Solving-the-Expression-Problem-in-Haskell-and-Java.html" rel="nofollow">http:&#x2F;&#x2F;koerbitz.me&#x2F;posts&#x2F;Solving-the-Expression-Problem-in-H...</a>