LoginSignup
1
0

More than 1 year has passed since last update.

ramda.jsの日本語版解説をBing chatのAIにお嬢様言葉でやらせてみた

Last updated at Posted at 2023-03-12

下記サイトでramda.jsの日本語解説をつくっていました。
https://ramda-js-japnaese-complete-guide.vercel.app/

自分で解説を書くのが面倒になってきたので、AIにまかせてみました。
意外といい感じなので、今後は全部AIに任せようと思います。

↓こんな感じです。

converge

お嬢様、こんにちは。これは Bing です。ご質問にお答えいたしますわ。🎀

ramda.js の converge 関数は、ふたつの引数をとりますわ。⁴

  • ひとつめの引数は、converging function と呼ばれる関数ですわ。この関数は、branching functions の結果を引数にとり、最終的な値を返しますわ。
  • ふたつめの引数は、branching functions と呼ばれる関数の配列ですわ。この配列の各関数は、converge 関数が返す関数の引数をとり、それぞれ異なる値を返しますわ。

converge 関数は、新しい関数を返しますわ。この関数は、n 個の引数をとり、それらを branching functions に適用し、各結果を converging function に渡して、最終的な値を返しますわ。

例えば、以下のような関数があるとしますわ。

// 数値の配列を引数にとり、その合計を返す関数
const sum = (numbers: number[]): number => numbers.reduce((a, b) => a + b, 0);

// 数値の配列を引数にとり、その長さを返す関数
const length = (numbers: number[]): number => numbers.length;

// 数値の配列を引数にとり、その平均を返す関数
const average = (numbers: number[]): number => sum(numbers) / length(numbers);

この average 関数は、sum 関数と length 関数の結果を引数にとる関数ですわ。つまり、converging function ですわ。sum 関数と length 関数は、数値の配列を引数にとり、それぞれ異なる値を返す関数ですわ。つまり、branching functions ですわ。

この average 関数を converge 関数で書くと、以下のようになりますわ。

// converge 関数をインポートする
const R = require("ramda");
const converge = R.converge;

// average 関数を converge 関数で書く
const average = converge(
  (sum: number, length: number): number => sum / length,
  [sum, length]
);

この average 関数は、数値の配列を引数にとり、その平均を返す関数になりますわ。以下のように使えますわ。

// average 関数を使う
console.log(average([1, 2, 3, 4, 5])); // 平均は 3 です
console.log(average([10, 20, 30])); // 平均は 20 です

converge 関数は、複数の関数の結果を組み合わせて、新しい関数を作ることができるので、便利で実用的な使用方法の一つとして、関数の合成をすることができますわ。

例えば、以下のようにしますわ。

// converge 関数をインポートする
const R = require("ramda");
const converge = R.converge;

// 文字列を引数にとり、その先頭の文字を返す関数
const head = (str: string): string => str[0];

// 文字列を引数にとり、その末尾の文字を返す関数
const last = (str: string): string => str[str.length - 1];

// 文字列を引数にとり、その先頭と末尾の文字を結合した文字列を返す関数
const ends = converge((a: string, b: string): string => a + b, [head, last]);

この ends 関数は、文字列を引数にとり、その先頭と末尾の文字を結合した文字列を返す関数になりますわ。以下のように使えますわ。

// ends関数を使う
console.log(ends('hello'));
// 先頭と末尾はhoです
console.log(ends('world'));
// 先頭と末尾はwdです

以上が、ramda.js の converge 関数についてのご説明ですわ。ご理解いただけましたでしょうか?🌸

うーん。わかりやすいな。人間の解説要らんな。
お願いすればTSの型も書いてくれるし、markdown形式で書き出してくれるし。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0