When comparing LiveScript vs Haskell (via GHCJS), the Slant community recommends LiveScript for most people. In the question“What are the best languages that compile to JavaScript? ” LiveScript is ranked 27th while Haskell (via GHCJS) is ranked 28th. The most important reason people chose LiveScript is:
LiveScript has terse syntax for common functional operations like map, and ships with a library, prelude.ls, with many of the functions most commonly used by functional programmers.
Ranked in these QuestionsQuestion Ranking
Pros
Pro Designed for High-level functional code
LiveScript has terse syntax for common functional operations like map, and ships with a library, prelude.ls, with many of the functions most commonly used by functional programmers.
Pro Good amount of programmer flexibility
There's a huge range of features that can make common tasks faster.
Pro ECMA 6 Features
It is the declared goal of LiveScript’s creators to track ECMAScript 6. Hence, the language gives you ECMAScript 6 plus type annotations (which are optional).
LiveScript's module syntax is currently a bit behind the ECMAScript 6 specification (something that will be fixed eventually). It supports two module standards: CJS (Node.js) and AMD (RequireJS).
Pro Fixes coffeescript scoping issues
=
is used to declare variables in the current scope, in order to redeclare variables of outer scope :=
is used. This way bugs are reduced.
Pro Supported by WebStorm and Visual Studio
Pro Terse
Haskell is a very terse language, particularly due to its type inference. This means there's nothing to distract from the intent of the code, making it very readable. This is in sharp contrast to languages like Java, where skimming code requires learning which details can be ignored. Haskell's terseness also lends itself to very clear inline examples in textbooks, and makes it a pleasure to read through code even on a cellphone screen.
Pro Quick Feedback
It's often said that, in Haskell, if it compiles, it works. This short feedback loop can speed up learning process, by making it clear exactly when and where mistakes are made.
Pro All of Haskell, with the same tools you're used to
No need to learn new syntax or semantics, and no need to install and learn a bunch of new tools - it's just GHC.
Pro Provides seamless concurrency, without the need for promises or callbacks
Pro Built-in REPL which lets you interact with your GHCJS compiled web page
Cons
Con Strong functional lean
LiveScript is designed to be a high level functional language. For people who prefer a more imperative approach it can be hard to get used to.
Con Compiles to unreadable javascript
JSON.stringify(
each(upCaseName)(
sortBy(function(it){
return it.id;
})(
(function(){
var i$, ref$, len$, ref1$, j$, len1$, ref2$, results$ = [];
for (i$ = 0, len$ = (ref$ = table1).length; i$ < len$; ++i$) {
ref1$ = ref$[i$], id1 = ref1$.id, name = ref1$.name;
for (j$ = 0, len1$ = (ref1$ = table2).length; j$ < len1$; ++j$) {
ref2$ = ref1$[j$], id2 = ref2$.id, age = ref2$.age;
if (id1 === id2) {
results$.push({
id: id1,
name: name,
age: age
});
}
}
}
return results$;
}()))));
Con The generated code can be difficult to debug
It should be mentioned that since the execution model of Haskell is very different from common imperative languages (lazy evaluation), the generated code doesn't resemble the source code at all, so it can be very difficult to debug.
Con Large runtime
GHCJS supports the entire Haskell runtime, the Javascript it outputs tends to be quite large. This is in contrast to options such as Fay, which save some overhead by not supporting some features such as multi-threading.