Servant (web framework)

Short description: Haskell web framework

ServantOriginal author(s)| Alp Mestanogullari, Sönke Hahn, Julian Arni

|

Initial release| 2014; 12 years ago (2014)
Written in| Haskell
Operating system| Cross-platform
Available in| English
Type| Web framework
License| BSD 3-clause license[1]
Website| www.servant.dev

Servant is a web framework based on the programming language Haskell, with an emphasis on data type safety.[2][3][4] It is free and open-source software released under a BSD 3-clause license.

## Contents

* 1 Overview
* 2 Usage
* 3 See also
* 4 References
* 5 External links

## Overview

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.[5]

The type-level approach by Servant solves the expression problem by allowing the extensibility along the dimensions of both data and behavior.[5] New combinators or terms in the DSL can be modularly introduced, as can new interpretations of them, as entirely separate packages. As of 2023, well over 100 packages related to Servant have been published in the Haskell package repository.[6]

## Usage

It is used in production by companies such as GitHub,[7] NoRedInk,[8] Klarna,[9] Input Output Global Inc. (in the Cardano project),[10] and Wire.[11]

## See also

* Yesod (web framework)
* Snap (web framework)

## References

1. ↑ "Servant license". https://github.com/haskell-servant/servant/blob/master/servant/LICENSE.
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). pp. 150. doi:10.1109/SecDev.2016.040. ISBN 978-1-5090-5589-0. https://ieeexplore.ieee.org/document/7839809.
5. ↑ 5.0 5.1 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.
6. ↑ "Browse and search packages". https://hackage.haskell.org/packages/search?terms=servant.
7. ↑ 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. doi:10.1145/3547639.
8. ↑ "Type-Safe MySQL Queries via Postgres". 5 November 2019. https://blog.noredink.com/post/188829831203/type-safe-mysql-queries-via-postgres.
9. ↑ Mulder, Felix. "Haskell in Production: Services at Klarna written in Haskell". https://felixmulder.com/talks/2020/01/21/Haskell-at-Klarna.html#/our-haskell-stack.
10. ↑ "Cardano Wallet Design". https://input-output-hk.github.io/cardano-wallet/design/Specifying-exceptions-with-Servant-and-Swagger#background.
11. ↑ "Servant". https://docs.wire.com/developer/developer/servant.html.

## External links

* on GitHub

* v
* t
* e

Web frameworks

* Comparison

C++|

* CppCMS
* Wt

CLI|

* ASP.NET
* Core
* AJAX
* Dynamic Data
* MVC
* Razor
* Web Forms
* DNN
* BFC
* MonoRail
* OpenRasta
* Umbraco
* WebSharper

ColdFusion|

* CFWheels
* ColdBox Platform
* ColdSpring
* Fusebox
* Model-Glue

Common Lisp|

* Caveman2
* CL-HTTP
* Weblocks

Haskell|

* Yesod
* Snap

Java|

* AppFuse
* Flexive
* Grails
* GWT
* ICEfaces
* ItsNat
* JavaServer Faces
* JHipster
* Jspx
* JWt
* OpenXava
* Play
* Remote Application Platform
* RIFE
* Seam
* Sling
* Spring
* Stripes
* Struts
* Tapestry
* Vaadin
* Vert.x
* WebWork
* Wicket
* WaveMaker
* ZK

JavaScript|

* Angular/AngularJS
* Backbone.js
* Chaplin.js
* Closure
* Dojo Toolkit
* Ember.js
* Express.js
* Ext JS
* jQuery
* Knockout.js
* Meteor
* MooTools
* Node.js
* OpenUI5
* Prototype
* React
* Rico
* script.aculo.us
* Sencha Touch
* SproutCore
* Svelte
* Vue.js
* Wakanda

Perl|

* Catalyst
* Dancer
* Mason
* Maypole
* Mojolicious
* WebGUI

PHP|

* CakePHP
* CodeIgniter
* Drupal
* Fat-Free
* FuelPHP
* Flow
* Grav
* Gyroscope
* Horde
* Joomla
* Kohana
* Laravel
* Lithium
* Midgard
* MODX
* Nette
* Phalcon
* PHP-Fusion
* Pop PHP
* PRADO
* ProcessWire
* Qcodo
* Silex
* SilverStripe
* Symfony
* TYPO3
* WordPress
* XOOPS
* Yii
* Zend Framework

Python|

* BlueBream
* CherryPy
* Django
* Flask
* Grok
* Nevow
* Pyjs
* Pylons
* Pyramid
* Quixote
* TACTIC
* Tornado
* TurboGears
* web2py
* Webware
* Zope 2
* more...

Ruby|

* Camping
* Merb
* Padrino
* Ruby on Rails
* Sinatra

Scala|

* Lift
* Play
* Scalatra

Smalltalk|

* AIDA/Web
* Seaside

Other languages|

* Vibe.d (D)
* Application Express (PL/SQL)
* Grails (Groovy)
* Kepler (Lua)
* OpenACS (Tcl)
* Phoenix (Elixir)
* SproutCore (JavaScript-Ruby)
* Yaws (Erlang)

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Servant (web framework). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Servant_(web_framework)&oldid=2568441"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template