Programmatically generate sophisticated SQL
Software development teams use napkin to programmatically generate sophisticated SQL as part of their full application stack. User-customized reporting, multi-tenant dashboard preparation, reporting & analytics datacube generation are common use cases for napkin in existence today.
At its core, napkin is a Haskell based Domain Specific Language (DSL) that very directly approximates SQL. You can dynamically write SQL and produce large amounts of sophistication with relatively little code. Because napkin’s DSL is a direct mapping to SQL itself, there is no ORM or other middle-layer to understand - you can generate SQL directly but with a massively expanded arsenal of utility functions that support you.