Servant provides a type-level domain-specific language (DSL) to describe World Wide Web application programming interfaces (Web APIs); various interpretations of such descriptions are possible: as a server, which dispatches requests to handlers; as documentation and schema specifications for the API; and as client libraries in various languages.[6]
The type-level approach by Servant solves the expression problem by allowing the extensibility along the dimensions of both data and behavior.[6] New combinators or terms in the DSL can be modularly introduced, as can new interpretations of them, as entirely separate packages. As of 2023[update], well over 100 packages related to Servant have been published in the Haskell package repository.[7]
^Bragilevsky, Vitaly (May 2021). Haskell in Depth. Manning. ISBN978-1617295409.
^Putrady, Ecky (12 November 2018). Practical Web Development with Haskell: Master the Essential Skills to Build Fast and Scalable Web Applications. Apress. ISBN978-1484237380.
^ abMestanogullari, Alp; Hahn, Sönke; Arni, Julian; Löh, Andreas (2015). "Type-level web APIs with Servant: An exercise in domain-specific generic programming". Proceedings of the 11th ACM SIGPLAN Workshop on Generic Programming. pp. 1–12. doi:10.1145/2808098.2808099. ISBN9781450338103. S2CID14512955.
^Thomson, Patrick; Rix, Rob; Wu, Nicolas; Schrijvers, Tom (31 August 2022). "Fusing industry and academia at GitHub (experience report)". Proceedings of the ACM on Programming Languages. 6: 496–511. arXiv:2206.09206. doi:10.1145/3547639. S2CID249889460.