Jump to content

Snap (web framework)

From Wikipedia, the free encyclopedia
Snap
Original author(s)Gregory Collins, Doug Beardsley[1]
Developer(s)Snap Team
Initial releaseMay 2010; 14 years ago (2010-05)
Stable release
1.1.3.2[2] / July 19, 2023; 17 months ago (2023-07-19)
Repositorygithub.com/snapframework
Written inHaskell
Operating systemCross-platform: Unix, Unix-like, macOS; Windows NT
PlatformIA-32, x86-64
Available inEnglish
TypeWeb framework
LicenseBSD
Websitesnapframework.com

Snap is a web framework for developing web applications written in the functional programming language Haskell.[3][4]

Overview

[edit]

The Snap framework consists of the following:

  • snap-core,[5] a generic Haskell web server API.
  • snap-server,[6] a fast[7] 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

[edit]

Snap is used by Silk,[12] JanRain,[13][14] Racemetric,[15] Lee Paste's Financial Blog,[16][17] 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

[edit]

References

[edit]
  1. ^ Snap Framework Team. "Snap: A Haskell Web Framework: About". Snap Framework.com.
  2. ^ "snapframework/snap". GitHub.com.
  3. ^ Collins, Gregory; Beardsley, Doug (January–February 2011). "The Snap Framework: A Web Toolkit for Haskell" (PDF). IEEE Internet Computing. 15 (1): 84–87. doi:10.1109/mic.2011.21.
  4. ^ Biscardi, Chris (2014). Snap for Beginners. Gumroad.
  5. ^ "snap-core". Hackage.org.
  6. ^ "snap-server". Hackage.org.
  7. ^ "Snap 0.3 benchmarks with GHC 7.0.1". Snap Framework.com. Retrieved 2014-03-02.
  8. ^ Snap Framework Team. "Snap: A Haskell Web Framework: Heist Tutorial". Snap Framework.com.
  9. ^ Snap Framework Team. "Snap: A Haskell Web Framework: Snaplet Directory". Snap Framework.com.
  10. ^ "Snap.Core". Hackage.org.
  11. ^ "InfoQ Interview: Gregory Collins on High Performance Web Apps with Snap and Haskell". Sep 12, 2011.
  12. ^ "FP Complete Case Study – Silk – Structured Content Management" (PDF). FP Complete. Retrieved 2014-03-02.
  13. ^ "FP Complete Case Study – JanRain – User Management System" (PDF). FP Complete. Retrieved 2014-03-02.
  14. ^ "Blog tutorial on Snap and PostgreSQL". JanRain. Retrieved 2014-03-02.
  15. ^ Hoersten, Luke. "Haskell Snap App in Production". Retrieved 2014-03-02.
  16. ^ "Lee Paste". Lee Paste's Financial Blog.
  17. ^ Done, Chris. "lpaste source code". GitHub. Retrieved 2014-03-02.
  18. ^ Van der Jeugt, Jasper. "Hakyll". JasperVdJ.be. Retrieved 2024-11-09.
  19. ^ "scotty: Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp". Hackage.org.
  20. ^ "Spock: Another Haskell web framework for rapid development". Hackage.org.
  21. ^ "MFlow: stateful, RESTful web framework". Hackage.org.
  22. ^ "miso: A tasty Haskell front-end framework". Hackage.org.
[edit]