sunroof-compiler: Monadic Javascript Compiler

[ bsd3, compiler, embedded, javascript, language, library, web ] [ Propose Tags ]
Versions [RSS] 0.2
Dependencies base (>=4.3.1 && <5), Boolean (>=0.2), containers (>=0.4), data-default (>=0.5 && <0.6), data-reify (>=0.6), mtl (>=2.0), operational (>= && <0.3), semigroups (>=0.9), tagged (>=0.4.4), template-haskell (>=2.8), transformers (>=0.3 && <0.4), vector-space (>=0.8.6) [details]
License BSD-3-Clause
Copyright (c) 2012 The University of Kansas
Author Andrew Gill <>, Jan Bracker <>
Maintainer Jan Bracker <>
Category Web, Language, Embedded, Compiler, Javascript
Home page
Bug tracker
Source repo head: git clone git://
Uploaded by JanBracker at 2013-04-12T20:38:33Z
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 1349 total (7 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for sunroof-compiler-0.2

[back to package description]


Sunroof is a Haskell-hosted Domain Specific Language (DSL) for generating JavaScript. Sunroof is build on top of the JS-monad, which, like the Haskell IO-monad, allows access to external resources, but specifically JavaScript resources. As such, Sunroof is primarily a feature-rich foreign function API to the browser's JavaScript engine, and all the browser-specific functionality, including HTML-based rendering, event handling, and drawing to the HTML5 canvas.

It uses monadic reification, to reify a deep embedding of the JS-monad, and from this embedding it generates JavaScript. The Sunroof DSL has the feel of native Haskell, with a simple Haskell-based type schema to guide the Sunroof programmer. Furthermore, because it generates code, Sunroof can offer Haskell-style concurrency patterns, like MVars and Channels. In combination with a web services package like kansas-comet, the Sunroof compiler offers a robust platform to build interactive web applications, giving the ability to interleave Haskell and JavaScript computations with each other as needed (sunroof-server).

Further Information

Further information on Sunroof can be found in different places: