Here’s the Deal
Slant is powered by a community that helps you make informed decisions. Tell us what you’re passionate about to get your personalized feed and help others.
Because of full dependent types in Idris, the programmer can focus more on modelling the domain with types and waste less time fixing common bugs that the type checker will catch. Dependent types help apply type driven development and a lot of code auto generation, making the compiler and type checker an ally in developing working software instead of just getting in the way. See More
Idris, while similar to Haskell, has strict semantics, which may cause some confusion if your backend is done in Haskell. If using Idris, it would make sense to do the backend in Idris as well, if not for the fact that Idris currently has fewer libraries available for web development than Haskell. See More
PureScript is written in Haskell, but meant to be used with Node.js. As a result, to get started, users must install Node.js (the PureScript compiler itself can be installed via NPM). In addition, PureScript has different semantics from Haskell, and so even after installing, there's still some overhead to getting productive with PureScript. See More
ClojureScript has superb wrappers around React.js (see Reagent) that make building single-page apps a breeze. With figwheel, it's a web dev experience unlike any other -- hotloaded code, repl interaction, and instantly reflected changes make good development fun and fast. You can add things like Garden to make CSS-writing part of the same holistic experience and suddenly all development is a pleasant, smooth process. See More
The dynamic typing allows coffee to be written quickly and, as necessary, dispatched on the actual properties of the data (see the Spec pro). This is excellent way to deal with the JSON problem because you can easily consider the shape of the data you're working with, without the overhead of a system-wide type system. See More
From the creator of Clojure: Spec is a new core library (Clojure 1.9 and Clojurescript) to support data and function specifications in Clojure. Writing a spec should enable automatic: Validation, Error reporting, Destructuring, Instrumentation, Test-data generation and Generative test generation. See More
Figwheel builds your ClojureScript code and hot loads it into the browser as you are coding! Every time you save your ClojureScript source file, the changes are sent to the browser so that you can see the effects of modifying your code in real time. See More
Haste was designed to allow both the client and server to be written as parts of the same, type-safe application. This is in stark contrast to most other options, where the client and server are considered two separate entities, resulting in extra manual validation code and more chances for type errors. See More
Haxe is only for people who already know ActionScript and have followed the project from the beginning. All the textbooks are out of date, as is the official documentation. There's no way to bring in new team members. Nov./2018 : This must be a very outdated CON, notable efforts have been made to make it more accessible. Some level of programming know-how is required to enter Haxe development, such is true. https://haxe.org/videos/ See More
Syntactic macros allow you to extend compiler features at the syntax tree step. Macros come into play after code is parsed into the abstract syntax tree, and macros allow you to transform it before the rest of the compilation completes. This provides for immense power, while at the same time scoping the extensibility at a level that is powerful, but well constrained. See More
Reason has been an amazing coding experience so far. It’s made me a better programmer. See More
Benjamin San Souci's Experience
With a Haskell backend, GHCJS enables code sharing. In combination with the power of Haskell as a language, this enables an extremely tight integration of the client side with the server side, where all the communications take place in a type-safe manner and even transparently if desired. See More
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. See More
In contrast to other options, Scala.js is a compiler plugin for an already existing and mature language: Scala. As such, it benefits automatically from the existing compiler, from the language design choices made for Scala, which exists and is established in the industry since years. See More
The strength of Scala (JVM) on the server can not be underestimated, and is probably superior to any other choice listed here (where applicable; many have no server-side equivalent). Being able to use such a powerful language (and ecosystem) on the server AND on the client, and sharing code between the two, is a big advantage. See More
It can sometimes be hard to be sure of what CoffeeScript will compile down to because of the optional parentheses and significant white spacing. Over multiple lines the same statement can be written in many different ways, and it's not always clear what the intended interpretation is. For example: foo bar and hello world can compile to either: foo(bar) && hello(world) foo(bar && hello(world)) See More
Because of how variables are initialized and reassigned in CoffeeScript, it becomes very easy to accidentally overwrite a variable as the codebase increases. As complexity increases, the only way to safely create a variable is by pressing Ctrl + F and by examining the current file to ensure that there's no conflict. See More
Help millions of people make better decisions.
Each month, over 2.8 million people use Slant to find the best products and share their knowledge. Pick the tags you’re passionate about to get a personalized feed and begin contributing your knowledge.