たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

逆引きRamda.js

Ramda.jsの関数を機能ごとに整理してみた。
日本語のRamda.js記事が少ないのは、なんでなんだろね?

制御構造の抽象化

条件分岐

if系

R.ifElse

R.ifElse(condition, onTrue, onFalse)
condition関数に基づいてonTrue || onFalse関数を実行.
http://ramdajs.com/docs/#ifElse

R.when

R.when(condition, whenTrueFn)
conditionを満たしたら処理を実行する、という使い方をする関数.
R.unlessの真逆.

R.unless

R.unless(conidition, whenFalseFn)
coniditionを満たしたら処理をスキップする、という使い方をする関数.
R.whenの真逆.
Maybeモナドにちょっと似てるね.

R.cond

R.cond([
  [condition, onTrue],
  [condition, onTrue],
  ...
])

if, else if, else if, ... の関数型.

判定返り値返し

R.both

return f1(args) && f2(args)
f1がfalseならf1の返り値が、trueならf2の返り値が出てくる.

R.either

return f1(args) || f2(args) R.bothの親戚

逐次処理

直列処理系

正確には、逐次処理を可能にする関数を合成する系の関数.
ポイントフリースタイルが簡単に.

並列分岐系

aをもとに処理をしてbとcをつくり、bとcでさらに処理をするタイプのもの.
aが2つに分岐して、その後合流するみたいな感じ

R.converge

R.converge(convergingF, [divergingF, ...])
入力をn個のdiverging functionで処理し、この返り値全てをconverging functionへの入力とする

ループ系

while

R.until

R.until(condition, process)
conditionを満たすまでarg=process(arg)を反復.

判定系

R.allPass

condition関数のlistを引数にとり、すべてtrueならtrueを返す

R.anyPass

condition関数のlistを引数にとり、いずれかtrueならtrueを返す.

R.and

2つのcondition関数を引数を取り、両方trueならtrueを返す.

R.or

2つの引数を ||するだけ、単純

R.complement

R.complement(conditionF) => "(arg)=>!condition(arg)"
condition関数がtrueならfalseを、falseならtrueを返す.

R.not

引数がtrueならfalseを、falseならtrueを返す.
まんま否定演算子

isEmpty

R.isEmpty(arg)
argが空 ([]とか、""とか、{}とか)ならtrue

pathSatisfies

xxx

propSatisfies

特定propertyがconditionを満たすか判定する模様??.

その他

defaultTo

defaultTo(default, arg)
if (arg === null || undefined || NaN) return default,
else return arg

たくさんのライブラリ関数たち

検証済み関数がたくさんあるということだから、一概に悪いわけではない.