Happstack

Last updated
Happstack
Original author(s) Alex Jacobson
Stable release
7.0 / March 29, 2012 (2012-03-29)
Repository Blue pencil.svg
Operating system Portable (requires GHC and libraries)
Platform Portable
Available in Haskell
Type Application server
License BSD-3
Website http://www.happstack.com/

Happstack (Haskell Application Stack) is a free application server for websites written in the functional programming language Haskell. It integrates handling Web, persistence, XML/XSLT, and templating functionality. [1]

Free software software licensed to preserve user freedoms

Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, not price: users—individually or in cooperation with computer programmers—are free to do what they want with their copies of a free software regardless of how much is paid to obtain the program. Computer programs are deemed free insofar as they give users ultimate control over the first, thereby allowing them to control what their devices are programmed to do.

An application server is a software framework that provides both facilities to create web applications and a server environment to run them.

Website set of related web pages served from a single web domain

A website or Web site is a collection of related network web resources, such as web pages, multimedia content, which are typically identified with a common domain name, and published on at least one web server. Notable examples are wikipedia.org, google.com, and amazon.com.

Contents

It makes use of a number of Haskell libraries and systems such as Parsec, Cabal, Template Haskell, and monad transformers ("Your app then is just a set of state transformer functions (in the MACID Monad) that take an event and state as input and that evaluate to a new state, a response, and a (possibly null) set of sideeffects." [1] ) among others.

Parsec is a library for writing parsers in Haskell. It is based on higher-order parser combinators, so a complicated parser can be made out of many smaller ones. It has been reimplemented in many other languages, including Erlang,, Elixir,, OCaml, and F#, as well as imperative languages such as C#, and Java.

The Haskell Cabal aids in the packaging and distribution of software packages. It is contained in the Haskell Platform.

Template Haskell is an experimental language extension to the Haskell programming language implemented in the Glasgow Haskell Compiler. In early incarnations it was also known as Template Meta-Haskell.

Relation to HAppS

Happstack is the continuation of the HAppS project. [2] The project name was changed to highlight the transition to a more open development model and a change in project leadership. The transition was made with the blessing of Alex Jacobson, and the HAppS developers are still involved in the coding.

See also

The staged event-driven architecture (SEDA) refers to an approach to software architecture that decomposes a complex, event-driven application into a set of stages connected by queues. It avoids the high overhead associated with thread-based concurrency models, and decouples event and thread scheduling from application logic. By performing admission control on each event queue, the service can be well-conditioned to load, preventing resources from being overcommitted when demand exceeds service capacity.

Prevayler is an open-source (BSD) system-prevalence layer for Java: it transparently persists Plain Old Java Objects. It is an in-RAM database backed by snapshots of the system via object serialization, which are loaded after a system crash to restore state. Changes to data happen via transaction operations on objects made from serializable classes. Prevayler's development was started by Klaus Wuestefeld.

Twisted (software) event-driven network programming framework

Twisted is an event-driven network programming framework written in Python and licensed under the MIT License.

References