Returns a function, fn, which encapsulates if/else-if/else logic.
R.cond takes a list of [predicate, transform] pairs. All of the
arguments to fn are applied to each of the predicates in turn until
one returns a "truthy" value, at which point fn returns the result of
applying its arguments to the corresponding transformer. If none of
the predicates matches, fn returns undefined.
var fn = R.cond([
[R.equals(0), R.always('water freezes at 0°C')],
[R.equals(100), R.always('water boils at 100°C')],
[R.T, temp => 'nothing special happens at ' + temp + '°C']
fn(0); //=> 'water freezes at 0°C'
fn(50); //=> 'nothing special happens at 50°C'
fn(100); //=> 'water boils at 100°C'
R.T always returns
true and ignores any parameters passed to it.
That is the reason the
100 you passed in was ignored and it just returned
R.cond searches each of the
[predicate, transform] pairs, and stops searching on the first predicate that evaluates to
So the first matching entity from the
[predicate, transform] pair would be evaluated.
If nothing is
true, then it reaches the end and executes the
R.T predicate (which is always
true) and that acts like the else part of list.