Hah, I'm tempted to go through the Ocaml 99 problems (which was inspired by the Prolog version) using ES6 [1]. Turns out, with recursion and a head and tail function, you can do virtually anything with lists.<p>I hope the popular JS engines optimize the hell out of the gathering operator, and adds TCO (it's on the ES6 spec, evidently). Then we won't even need to cross our fingers when we describe JS as a functional language to our peers.<p>And with the increasing emphasis on immutability, as preached by the React crowd, with cross seeding from the Clojurescript-React connections, JS grows even closer to being a Scheme [2].<p>If ES7 would lock down 'use strict' mode against even more of JS's weak-typing bloopers, things would be even better yet. I don't see why they shouldn't. They whole reason for 'use strict' is to give people who need backwards compatibility an out.<p>Incidentally, I'm also having great success using ES6 arrow functions at work, thanks to 6to5 [3]. I do a lot of d3 work, and arrow functions have made using d3, particularly the ubiquitous d3 accessor functions, so much nicer. Highly recommended.<p>For the first time since Node, I'm actually getting excited about Javascript's prospects. Now, if only they'd add types, and sum types...<p>1. <a href="http://ocaml.org/learn/tutorials/99problems.html" rel="nofollow">http://ocaml.org/learn/tutorials/99problems.html</a><p>2. No, I don't actually believe that JS is a Scheme in disguise.<p>3. <a href="https://github.com/6to5/6to5" rel="nofollow">https://github.com/6to5/6to5</a>