TL;DR

JavaScript のプログラマ向けの、実用的な関数型プログラミングのライブラリ。小さな関数をつなげたパイプラインを、ユーザのデータを書き換えずに書ける。

なぜ必要か

公式サイトによると、関数型の色合いを持つライブラリはすでにいくつもあるが、Ramda はより絞った目的で作られた。関数型のスタイルのためだけに設計され、ユーザのデータを決して書き換えないライブラリを目指している。

仕組み

Ramda は次の 3 つを設計の柱にしている。

  • イミュータブルで副作用がない: Ramda の関数はユーザのデータを書き換えない。ただし、それを強制はしない
  • 自動カリー化: 後ろの引数を省くと、残りの引数を受け取る新しい関数が返る
  • データを最後の引数に取る: 操作の対象となるデータを最後に渡すので、カリー化や関数の連結がしやすい

例

import * as R from "ramda"
 
R.map(R.identity, [1, 2, 3]) // [1, 2, 3]

関連

出典