Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Snap (web framework)

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

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. Bibcode:2011IIC....15a..84C. 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]