…often, with the right framework design, you can achieve all the necessary functionality without using any code in IO…
Real-world programming isn’t about having things convenient “often enough”, it’s about getting a task like “this endpoint should serve both a POST 200
and a PATCH 204
, both with different argument sets” and not having to bend over backwards to fill it in.
servant
's approach, from my experience, is just unwieldy. Things don’t need to be packed into the type-level; the server endpoint either works correctly or it doesn’t, and you should be able to unit test that. I imagine things are even worse with yesod
because their minimal app is TemplateHaskell
over QuasiQuotes
.
…the problem with Yesod was that it somehow presupposed knowledge of Haskell…
This pops up constantly for some reason: why do we care about people who don’t know programming getting all the tools to do programming without actually learning programming? (replace “programming” with “banking”, “art” or whatever the next marketing bubble drags in). More people doesn’t automatically translate to better software, in the short term it probably translates to more bad software. And I don’t know if all that many people would want to stay long without a solid ecosystem to support them.
…only mention it’s Haskell-based at the very end.
If Haskell is the weak link in your system, then why even bother with it? If your goal is winning a popularity contest no matter the cost, a relatively esoteric language isn’t gonna cut it. Especially when the committee clearly has issues coming up with solutions to seemingly mundane things, like record field access.