Math では数字に関する関数を扱います。
正直プリミティブ過ぎてあんまり使い所がない気がする。
現在 13 個。完了。
add
add(2, 3); // => 5
単純に足し算をする関数です。
わざわざ関数にするほどでもないので僕は使いません。
カリー化されているので、そこが便利といえば便利かも。
dec
number を引数に取り、1 減らした number を返す関数です。
dec(40); // => 39
inc
increment。1 足した number を返す関数。
R.inc(42); //=> 43
divide
割り算。
R.divide(71, 100); //=> 0.71 71÷100 = 71/100 -> 0.71
const half = R.divide(R.__, 2);
half(42); //=> 21
const reciprocal = R.divide(1);
reciprocal(4); //=> 0.25
mathMod
deepl
mathMod は、%演算子(ひいては R.modulo)とは異なり、数学的にはモジュロ演算子のような振る舞いをする。つまり、-17 % 5 は-2 ですが、mathMod(-17, 5)は 3 です。mathMod は Integer 引数を必要とし、モジュラスがゼロまたは負の場合は NaN を返します。
全然わからないし一生使うことなさそう。
誰か詳しい人教えてください。負数があるときに mod とはなんか違うっぽいらしいが……。
数学的な剰余とかなんとか。
R.mathMod(-17, 5); //=> 3
R.mathMod(17, 5); //=> 2
R.mathMod(17, -5); //=> NaN
R.mathMod(17, 0); //=> NaN
R.mathMod(17.2, 5); //=> NaN
R.mathMod(17, 5.3); //=> NaN
const clock = R.mathMod(R.__, 12);
clock(15); //=> 3
clock(24); //=> 0
const seventeenMod = R.mathMod(17);
seventeenMod(3); //=> 2
seventeenMod(4); //=> 1
seventeenMod(10); //=> 7
mean
平均
R.mean([2, 7, 9]); //=> 6 2+7+9=18 18/3 = 6
R.mean([]); //=> NaN
median
中央値。
奇数は真ん中の数。
偶数は真ん中の数 2 つを足して 2 で割ったもの。
R.median([2, 9, 7]); //=> 7
R.median([7, 2, 10, 9]); //=> 8
R.median([]); //=> NaN
modulo
こちらは JS 的な剰余らしい。%と一緒なのかな。
R.modulo(17, 3); //=> 2
// JS behavior
R.modulo(-17, 3); //=> -2
R.modulo(17, -3); //=> 2
const isOdd = R.modulo(R.__, 2);
isOdd(42); //=> 0
isOdd(21); //=> 1
multiplyMath
かけ算ですな。
const double = R.multiply(2); //2をかける関数
const triple = R.multiply(3); //3をかける関数
double(3); //=> 6 2をかける関数に3をかけたら6になるわな
triple(4); //=> 12
R.multiply(2, 5); //=> 10
negate
-をかける関数。
42 -> -42
-42 -> 42
R.negate(42); //=> -42
product
数の配列を全部かける関数。
R.product([2, 4, 6, 8, 100, 1]); //=> 38400 2x4 =8 x 6 = 48 x 8 = 384x100 = 38400 x1 = 38400
subtract
引き算ですな。
これも解説要らんかなぁ。sub じゃなくて subtract なのね。
R.subtract(10, 8); //=> 2
const minus5 = R.subtract(R.__, 5);
minus5(17); //=> 12
const complementaryAngle = R.subtract(90);
complementaryAngle(30); //=> 60
complementaryAngle(72); //=> 18
sum
渡された数字の配列をすべて足す関数。
R.sum([2, 4, 6, 8, 100, 1]); //=> 121 2+4 = 6 + 6 = 12 + 8 = 20 + 100 = 120 + 1 = 121
const result = [2, 4, 6, 8, 100, 1].reduce((acc, cur) => acc + cur); //まあこういうのもあるわな