Servant (web framework)
Original author(s) | Alp Mestanogullari, Sönke Hahn, Julian Arni |
---|---|
Initial release | 2014 |
Preview release | 0.16
/ 2018 |
Written in | Haskell |
Operating system | Cross-platform |
Available in | English |
Type | Web framework |
License | BSD 3-clause[1] |
Website | www |
Servant is a web framework based on the functional programming language Haskell, with an emphasis on data type safety.[2][3][4][5] It is free and open-source software released under a BSD 3-clause license.
Overview
[edit]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]
Use
[edit]It is used in production by companies such as GitHub,[8] NoRedInk,[9] Klarna,[10] Input Output Global Inc. (in the Cardano project),[11] and Wire.[12]
See also
[edit]References
[edit]- ^ "Servant license". GitHub. Retrieved 10 February 2023.
- ^ Bragilevsky, Vitaly (May 2021). Haskell in Depth. Manning. ISBN 978-1617295409.
- ^ Putrady, Ecky (12 November 2018). Practical Web Development with Haskell: Master the Essential Skills to Build Fast and Scalable Web Applications. Apress. ISBN 978-1484237380.
- ^ Mazumder, Mark; Braje, Timothy (4 November 2016). "Safe Client/Server Web Development with Haskell". 2016 IEEE Cybersecurity Development (SecDev). p. 150. doi:10.1109/SecDev.2016.040. ISBN 978-1-5090-5589-0. S2CID 1953852.
- ^ Mazumder, Mark; Braje, Timothy (4 November 2016). "Safe Client/Server Web Development with Haskell". GitHub. Massachusetts Institute of Technology: Lincoln Laboratory. Retrieved 7 November 2024. Original slide presentation.
- ^ a b Mestanogullari, 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. ISBN 9781450338103. S2CID 14512955.
- ^ "Browse and search packages". Haskell.org: Hackage.
- ^ 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. S2CID 249889460.
- ^ "Type-Safe MySQL Queries via Postgres". NoRedInk Blog. 5 November 2019. Retrieved 16 February 2023.
- ^ Mulder, Felix. "Haskell in Production: Services at Klarna written in Haskell". Retrieved 16 February 2023.
- ^ "Cardano Wallet Design". Retrieved 16 February 2023.
- ^ "Servant". Wire Documentation. Retrieved 16 February 2023.
External links
[edit]