I like what you are doing here. Since I've been introduced to Haskell, I wondered about functional programming in JavaScript. To my surprise, JavaScript is versatile enough to support a lot of functional concepts!
[1] remove return, curly braces .. with ES6 unpacking/pseudo-pattern-matching and let, you're half way there.
Or, if you want to buy it in other formats, here: https://leanpub.com/javascriptallongesix