When comparing Haskell (via GHCJS) vs Cor, the Slant community recommends Haskell (via GHCJS) for most people. In the question“What are the best languages that compile to JavaScript? ” Haskell (via GHCJS) is ranked 28th while Cor is ranked 42nd. The most important reason people chose Haskell (via GHCJS) is:
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.
Ranked in these QuestionsQuestion Ranking
Pros
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
Pro Easy to debug
Cor supports source-maps, allowing you the easy debugging in major browsers. However a line of Cor source is compiled to the exact line number in JavaScript for accurated debugging when developing in platforms that doesn't supports source-maps such as servers.
Pro Clean syntax
Cor enables you to write large applications by providing a clean syntax, classes and a modular architecture to keep organized code, enforcing the writing of readable source code based on conventions.
Pro Cross platform
Cor compiles to plain JavaScript, so, to run it in Node.js or in the browser is piece of cake.
Pro Support coroutines
Cor support coroutines which can be chained, stopped, and synchronized, fitting very well into the web asynchronous world.
Pro Hot reload
Cor provides a smooth front-end development by furnishing a builtin hot-loader which resolves dependences and compiles source code on the fly, with just reloading the Web page. You will only need to use CLI tools to deliver a production-ready version of the app.
Pro Concurrent and parallel
Cor allows to synchronize coroutines by passing messages through channels, and supports the execution of many tasks in parallel, all of that by writing sequential code.
Cons
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.
Con Work in progress
Cor is still a very much young project (as of November 2015) with just one contributor, few stars on GitHub and virtually no learning resources outside the official documentation.
