Snap (web framework)

Snap is a web development framework written in the Haskell programming language.[3][4]

Snap
Original author(s)Gregory Collins, Doug Beardsley[1]
Developer(s)Snap Team
Initial releaseMay 2010
Stable release
1.1.3.0[2] / May 7, 2020 (2020-05-07)
RepositorySnap Repository
Written inHaskell
Operating systemCross-platform
TypeWeb framework
LicenseBSD License
Websitewww.snapframework.com

Overview

The Snap framework comprises:

  • 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 completely 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 such as 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 and *nix platforms. Snap uses the Iteratee I/O model,[11] As of version 1.0, its i/o is implemented with io-streams.

Usage

It is used by Silk,[12] JanRain,[13][14] Racemetric,[15] www.lpaste.net,[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

gollark: Maybe space *bees* use solar sail propulsion, laser propulsion or ion engines depending on circumstance (the sail bit is switchable between reflective and photovoltaic somehow), and space *moths* use the thermal thing.
gollark: I see.
gollark: Ion drives with solar power?
gollark: What are those?
gollark: Space bees also network together into large swarms to increase their intelligence, and can build "hives", autofactories with more processing power and possibly laser propulsion for nearby space bees.

References

  1. Team, The Snap Framework. "Snap: A Haskell Web Framework: About". snapframework.com.
  2. Team, The Snap Framework. "Snap: A Haskell Web Framework: Github: Release: Snap 1.1.3.0". github.com.
  3. Collins, Gregory; Beardsley, Doug (Jan–Feb 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". www.hackage.org.
  6. "snap-server". www.hackage.org.
  7. "Snap 0.3 benchmarks with GHC 7.0.1". www.snapframework.com. Retrieved 2014-03-02.
  8. Team, The Snap Framework. "Snap: A Haskell Web Framework: Heist Tutorial". snapframework.com.
  9. Team, The Snap Framework. "Snap: A Haskell Web Framework: Snaplet Directory". snapframework.com.
  10. "Snap.Core". hackage.haskell.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. "Haskell Snap App in Production". Luke Hoersten. Retrieved 2014-03-02.
  16. "New paste". www.lpaste.net.
  17. "lpaste source code". Chris Done. Retrieved 2014-03-02.
  18. "Hakyll - Home". jaspervdj.be.
  19. "scotty: Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp". Hackage.
  20. "Spock: Another Haskell web framework for rapid development". Hackage.
  21. "MFlow: stateful, RESTful web framework". Hackage.
  22. "miso: A tasty Haskell front-end framework". Hackage.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.