ramda.js

Ramda: Tutorial incorrect? Order of arguments in R.divide


I'm new to functional coding, and I've stumbled across following tutorial example:

const mathPipe = R.pipe(   // 10
  R.multiply(4),           // 4 * 10
  R.add(2),                // 2 + 40
  R.divide(2)              // 2 / 42
);

mathPipe(10)

> 21

When I run this, it gives me 0.047619047619047616 which seems correct to me, since Ramda is function-first, data-second. I added the comments to show what in fact is calculated.

The tutorial however says the expected answer is 21, so the actual last operation would be 42 / 2.

So I guess my questions is: Was there a time when the argument order was inverted? Or is the tutorial just plainly incorrect? It is from July 2018.

I hope it's ok to ask this but I'm very new to functional coding and this was just a bit too confusing.


Solution

  • I assume you are talking about this article? The example is just wrong — the author knows what should happen, as he describes:

    "Ramdas’ math functions add, multiply, and divide all take 2 parameters, but we are only passing the first parameter in, and the second value will get passed in through the pipe.

    Thus, he would have known it is R.divide(2)(current) (i.e. 2/current) being evaluated; i.e. Ramda works exactly as the author explains it, both now and then. However the result shown in his example contradicts both his explanation, and the actual result.