| Snap | |
|---|---|
| Original authors | Gregory Collins, Doug Beardsley1 |
| Developer | Snap Team |
| Initial release | May 2010 (2010-05) |
| Stable release | 1.1.3.22
/ July 19, 2023 (2023-07-19) |
| Written in | Haskell |
| Operating system | Cross-platform: Unix, Unix-like, macOS; Windows NT |
| Platform | IA-32, x86-64 |
| Available in | English |
| Type | Web framework |
| License | BSD |
| Website | snapframework |
| Repository | github |
Snap is a web framework for developing web applications written in the functional programming language Haskell.34
Overview
The Snap framework consists of the following:
- snap-core,5 a generic Haskell web server API.
- snap-server,6 a fast7 HTTP server that implements the snap-core interface.
- Heist,8 an HTML-based templating system for generating pages that allows you to bind Haskell functionality to HTML tags for a clean separation of view and backend code, much like Lift's snippets. Heist is self-contained and can be used independently.
- Snaplets,9 a high-level system for building modular web applications.
- Built-in snaplets for templating, session management, and authentication.
- Third party snaplets for features including file uploads, database connectivity (PostgreSQL, MongoDB, etc.), generation of JavaScript from Haskell code, and more.
- The Snap monad for stateful access to HTTP requests and responses.10
Snap runs on both Windows NT and Unix-like platforms. Snap uses the Iteratee input/output (I/O) model,11 As of version 1.0, its I/O is implemented with io-streams.
Usage
Snap is used by Silk,12 JanRain,1314 Racemetric,15 Lee Paste's Financial Blog,1617 SooStone Inc, and Group Commerce. Snap is also used as a lightweight, standalone Haskell server. The static site generator Hakyll uses Snap for its preview mode.18
Other Haskell web frameworks
- Yesod (web framework)
- Servant (web framework)
- Scotty19
- Spock20
- MFlow21
- Miso22
References
References
- Snap Framework Team. "Snap: A Haskell Web Framework: About". Snap Framework.com.
- "snapframework/snap". GitHub.com.
- Collins, Gregory; Beardsley, Doug (January–February 2011). "The Snap Framework: A Web Toolkit for Haskell" (PDF). IEEE Internet Computing. 15 (1): 84–87. Bibcode:2011IIC....15a..84C. doi:10.1109/mic.2011.21.
- Biscardi, Chris (2014). Snap for Beginners. Gumroad.
- "snap-core". Hackage.org.
- "snap-server". Hackage.org.
- "Snap 0.3 benchmarks with GHC 7.0.1". Snap Framework.com. Retrieved 2014-03-02.
- Snap Framework Team. "Snap: A Haskell Web Framework: Heist Tutorial". Snap Framework.com.
- Snap Framework Team. "Snap: A Haskell Web Framework: Snaplet Directory". Snap Framework.com.
- "Snap.Core". Hackage.org.
- "InfoQ Interview: Gregory Collins on High Performance Web Apps with Snap and Haskell". Sep 12, 2011.
- "FP Complete Case Study – Silk – Structured Content Management" (PDF). FP Complete. Retrieved 2014-03-02.
- "FP Complete Case Study – JanRain – User Management System" (PDF). FP Complete. Retrieved 2014-03-02.
- "Blog tutorial on Snap and PostgreSQL". JanRain. Retrieved 2014-03-02.
- Hoersten, Luke. "Haskell Snap App in Production". Retrieved 2014-03-02.
- "Lee Paste". Lee Paste's Financial Blog.
- Done, Chris. "lpaste source code". GitHub. Retrieved 2014-03-02.
- Van der Jeugt, Jasper. "Hakyll". JasperVdJ.be. Retrieved 2024-11-09.
- "scotty: Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp". Hackage.org.
- "Spock: Another Haskell web framework for rapid development". Hackage.org.
- "MFlow: stateful, RESTful web framework". Hackage.org.
- "miso: A tasty Haskell front-end framework". Hackage.org.