
Zaphod: Clojure's API for JavaScript's Data Structures - codecurve
https://zaphod.surge.sh/
======
codecurve
tl;dr I wanted Clojure's simplicity with Lodash's flexibility, something
easier to integrate into existing projects than ImmutableJS or Mori.

Function bind syntax will be controversial, so I've also included a
compatibility interface, so you can use Zaphod from Babel-free JavaScript
([https://zaphod.surge.sh/compat/](https://zaphod.surge.sh/compat/))

~~~
k__
Doesn't Ramda create new entities instead of modifying existing ones?

~~~
jdd
You might dig lodash-bound – Enables chained lodash functions with ES bind
(::) syntax

[https://github.com/elado/lodash-bound](https://github.com/elado/lodash-bound)

~~~
k__
Yes, the whole :: syntax sounded nice and I used it quite a while last year,
but it don't believe it gets approved anymore. It's stage 0 for over a year
now and nothing happend.

------
Sonata
I'm really not a fan of the function bind operator. It adds extra complexity
to the meaning of "this" in JS, which is already one of the most confusing
aspects of the language.

I do understand that it is nice to be able to write those chained method call
pipelines, without having to monkey patch anything. I think the |> operator
from Elixer is a much simpler solution to this problem through, as it allows
you to use normal functions, rather than having to write special versions that
use 'this' for their primary data.

~~~
codecurve
Totally hear what you're saying and I think JS would be better off without
`this` in the first place. Clojure's threading macros are another great
solution to the chaining problem.

That said, `this` is here to stay and to me, function bind feels like a pretty
great way to write code that feels natural, without the danger of extending
the prototypes for Array and Object.

