Web/Frameworks/HSP
[WARNING: This page is extremely outdated and likely obsolete. hsp and hsx have not been updated on Hackage since 2013]
What is HSP?
Haskell Server Pages (HSP) is an extension of vanilla Haskell, targetted at the task of writing dynamic server-side web pages. Features include:
- Embedded XML syntax
- A (low-to-mid-level) programming model for writing dynamic web pages
- A library for writing server-side Javascript in Haskell
- Functions for using cgi to show HSP pages
History
The first version of HSP was presented by Eric Meijer and Danny van Velzen at the Haskell Workshop 2000. Their work was never fully implemented however. This system is at the same time an implementation, improvement and extension of their original system.
- version 0.2, May 2005:
- First public release.
- version 0.4 March 2008:
HSP Packages
Project HSP v 0.4 consists of a set of packages with related functionality:
Package hsx
Haskell Source with XML (HSX, hsx) is a package that contains everything pertaining to literal XML syntax. In particular it contains a) the trhsx preprocessor that translates hsx source files into vanilla Haskell, and b) modules defining the functions that are injected by trhsx. It also nominally contains generic combinators for creating values of the same types as the literal XML syntax, though these modules are not present in 0.4.
Package hsp
The core HSP package defines the datatypes and functions for writing server-side dynamic web pages. Also defines how to use the HJScript functionality in HSP pages, to allow for client-side dynamics as well.
Package HJavaScript
This package defines an abstract syntax and (not-so-)pretty printer for a large subset of JavaScript, as Language.HJavaScript. However, a significant difference from JavaScript is that HJavaScript is typed, even on the abstract syntax level using GADTs. The subset of JavaScript that is supported is those parts that lend themself to typing (i.e. no prototyping of classes).
Package HJScript
HJScript is a DSL built on top of HJavaScript, for writing client-side dynamic web pages. The programming model is fairly low-level, resembling the actual JavaScript code quite a lot, but should be easy to extend with higher-level functionality. Notable is that HJScript supports the use of literal XML syntax for creating DOM ElementNodes. Also notable is that HJScript supports Ajax functionality.
HJScript and HJavaScript can be used independently of HSP, for creating JavaScript code.
Package hsp-cgi
Run HSP pages as CGI scripts.
(Note: Earlier versions of HSP have come with a server application, hspr, providing the runtime environment for HSP. As of 0.4, this server has been discontinued and should be considered deprecated.)
Download
HSP is available from Hackage. It currently consists of several different packages.
- Package hsx
- Package hsp
- Package HJavaScript
- Package HJScript
- Package hsp-cgi
The development versions of the packages live in darcs repositories under http://code.haskell.org/HSP.
Installation and Usage
The packages are cabalized. Most of the packages can be configured, built and installed in the standard way.
TBW.
Documentation
Currently the only existing in-depth documentation is Niklas' masters thesis [ps, pdf]
Mailing list
There is a Google Group which you should join if you're interested in HSP. This is also the best place to ask any questions you might have.