R.equals(new Error('XXX'), new Error('XXX'))this evaluates to false - the tests in equals.js test for it to be true
npm run testit passes
npm run pretest && mocha test/equals
dist/ramda.jsthat is commited is the build from the most recent tagged release.
npm run buildprior, it was using ramda v0.18, which didn't yet have the
npm run testimplicitly runs
npm run pretestby convention of npm scripts prefixed with
pre(and likewise for
@gilligan You can view it as a way to compose a computation, where every step takes the value(s) from the previous step, and emits zero or more new values for the next step. This allows the final computation to be used in any kind of reduction (map, filter, etc) of any kind of list (array, stream, generator, etc). The internal mechanism also has a built-in way to deal with short-termination (when doing a
take(), for example).
Since you're extending the "step" function you end up with a means to "stream" your input list through the entire computation value by value, rather than doing
.map().filter().take() and building up intermediate lists in between steps. So once you've coded a transducer it is more efficient, and more reusable than when you code a chain of operations.
I found watching this video over and over again quite helpful in gaining an understanding: https://www.youtube.com/watch?v=6mTbuzafcII