To be fair, production (vs. library) code has to usually care much less about being extensible, since whoever needs to use it can also usually change it.<p>In servant dealing with the expression problem (albeit in a pretty different way than the usual tagless final approach) was in my opinion a pretty big win - it means you can add terms the the API DSL as well as interpretations for it. I pretty regularly do the former when using it, and there are lots of libraries doing the latter. (Disclaimer: I&#x27;m one of the authors of servant.)