Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I curry this better?

I've made this snippet using ramda to check if any value of array A exists in array B, assuming they are flat arrays.

var hasAtLeastOneTruthValue = ramda.contains(true);
var alpha = [1,2,3]
var beta = [4,1,7];

var valueOfArrayInArray = ramda.map(function(a_v){
    return ramda.contains(a_v, beta);
});

console.log(hasAtLeastOneTruthValue(valueOfArrayInArray(alpha)));

What I do not like is that hardcoded beta inside valueOfArrayInArray. Can it be done differently so that it's not? Please note that I'm not looking for a completely different implementation that has the same effect, but simply to understand currying better in this case.

like image 292
rollingBalls Avatar asked Sep 24 '14 19:09

rollingBalls


1 Answers

You could partially apply contains from the right:

var valueOfArrayInArray = R.map(R.rPartial(R.contains, beta))

Or flip it:

var valueOfArrayInArray = R.map(R.flip(R.contains)(beta))
like image 192
elclanrs Avatar answered Sep 19 '22 06:09

elclanrs