Updating this page
- Only works for UHC, but promising.
- UHC compiles enough of Hackage to be very useful.
- Doesn't produce an explosion of code, seemingly.
- Fairly substantial JS/DOM/W3C/HTML5 API.
- Currently works.
The Github page is here.
- Nicely designed.
- Compiles most pure Haskell libraries no problem.
- FFI to JS works, and the author, sviperll is a helpful guy.
- Work in progress.
- Generates relatively small code (in general between 0.9 and 5 times the size of functionally equivalent JS).
- Also generates relatively fast code (run times in general between 0.9 and 8 times that of functionally equivalent JS).
- Very simple runtime.
- Accompanying FRP and very basic DOM libraries.
- Calling back into JS via FFI is supported.
- (Supposed to be) relatively easy to install and use.
On the Haskell wiki (see above) and on hackage
- Not Haskell
- Untyped, but with syntactic correctness (at least) enforced at compile-time.
- Embeddable through quasi-quoting
- Support for various forms of code-generation
- Haskell interpreter in JS — An interpreter. Haven't tried but is apparently dead.
- hjscript — Beta. EDSL, not Haskell→JS. Works. Not very annoying to program in, but is JS semantics, not Haskell. Hackage package here.
- Some have also tried writing a Haskell→JS compiler to make a more direct JS-aware translation of code (to not have huge code output a la GHCJS, YHC, Emscripten), but ought to prefer to avoid NIH and hack on GHCJS or UHC.
- Early binding allows for static verification of the existence of method-signature pairs (e.g. v-tables). Late binding does not give the compiler (or an IDE) enough information for existence verification, it has to be looked up at run-time.
- Google Inc. thought it necessary to develop a compiler, Google Closure, which does type-checking and limited inference.