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:
1 2 3 4 5 | some_io_function( function (result) { find_name_in_db(result.person_id, function (name) { console.log(name); }) }); |
Now, it’s like this:
1 2 3 | some_io_function() .then((result) => find_name_in_db(result.person_id)) .then(console.log) |
And, with new ES6 features:
1 2 3 4 5 | 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…)