Haskell
There’s a little Haskell in your Javascript
This may seem a little strange, but althrough Javascript is a dynamic language, with very loose typing (automatic convertions, equals signs that only works on arrays/numbers/undefined/nil), lots of things that are “falsy” by default, with the new promise-based approach of Javascript, the language is borrowing some very interesting concepts from Haskell.
And yes, this is a great thing. And yes, this will probably change the way we program.
Let’s begin by talking about Javascript, and its new features. Old async-javascript code was probably like this:
some_io_function(function(result) { find_name_in_db(result.person_id, function(name) { console.log(name); }) });
Now, it’s like this:
some_io_function() .then((result) => find_name_in_db(result.person_id)) .then(console.log)
And, with new ES6 features:
async () => { var result = await some_io_function(); var name = await find_name_in_db(result.person_id); console.log(name) }
Now, what does this have to do with Haskell? Multiple things, but the most important: Functors!
(more…)