Jump to content

Servant (web framework)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Praseodymium-141 (talk | contribs) at 16:23, 3 May 2023. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.


Servant
Original author(s)Alp Mestanogullari, Sönke Hahn, Julian Arni
Initial release2014
Written inHaskell
Operating systemCross-platform
Available inHaskell
TypeWeb framework
LicenseBSD 3-Clause License[1]
Websitewww.servant.dev

Servant is a free and open-source a popular Haskell-based web framework with an emphasis on type-safety.[2][3][4] Servant provides a type-level domain-specific language (DSL) to describe 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.[5] It is used in production by companies such as GitHub,[6] NoRedInk,[7] Klarna,[8] Input Output Global Inc. (in the Cardano project),[9] and Wire.[10]

The type-level approach pioneered by Servant allows extensibility along the dimensions of both data and behavior, and is thus a solution to the expression problem.[5] New combinators or terms in the DSL may be modularly introduced, as well as new interpretations of them, as entirely separate packages. As of 2023, well over a hundred packages related to Servant have been published in the Haskell package repository.[11]

See also

References

  1. ^ "servant/LICENSE". GitHub. Retrieved 10 February 2023.
  2. ^ Bragilevsky, Vitaly (2021). Haskell in Depth. Manning. ISBN 9781617295409.
  3. ^ Putrady, Ecky (2018). Practical Web Development with Haskell: Master the Essential Skills to Build Fast and Scalable Web Applications. Apress. ISBN 978-1484237380.
  4. ^ Mazumder, Mark; Braje, Timothy (2016). "Safe Client/Server Web Development with Haskell". 2016 IEEE Cybersecurity Development (SecDev): 150. doi:10.1109/SecDev.2016.040. ISBN 978-1-5090-5589-0. S2CID 1953852.
  5. ^ 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". WGP 2015: Proceedings of the 11th ACM SIGPLAN Workshop on Generic Programming: 1–12. doi:10.1145/2808098.2808099. ISBN 9781450338103. S2CID 14512955.
  6. ^ Thomson, Patrick; Rix, Rob; Wu, Nicolas; Schrijvers, Tom (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.
  7. ^ "Type-Safe MySQL Queries via Postgres". NoRedInk Blog. Retrieved 16 February 2023.
  8. ^ Mulder, Felix. "Haskell in Production: Services at Klarna written in Haskell". Retrieved 16 February 2023.
  9. ^ "Cardano Wallet Design". Retrieved 16 February 2023.
  10. ^ "Servant". Wire Documentation. Retrieved 16 February 2023.
  11. ^ "Browse and search packages | Hackage".