The HJavaScript package

HJavaScript defines an abstract syntax and pretty printer for
a 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).