gpt4 book ai didi

javascript - JavaScript 中的仿函数实现

转载 作者:行者123 更新时间:2023-12-01 15:08:03 25 4
gpt4 key购买 nike

我尝试在 JavaScript 中实现 Functor。
Functor的定义图如下:
enter image description here
或在 nLab
enter image description here
https://ncatlab.org/nlab/show/functor
在这里,如您所见 F(f)表达式在类别图中看起来很典型。
我设法实现了Array.map作为 JavaScript 中的 Functor,如下所示:

  const compose = f => g => x => g(f(x));

const f = a => a * 2;

const F = a => [a];

const A = 1;
const FA = F(A); //[1]
const Ff = compose(f)(F);

const FB = Ff([FA]);

console.log(FB); //[2]
F = a => [a]A = 1 , F(1) = [1]然而,虽然我明白 F(f)方法, F(f) = [f]至少在 JavaScript 中不能作为函数工作。
.
实际上,只有我能想到的适当方法是函数组合,例如: compose(f)(F) .
另外,我做到了 FB = Ff([FA])然而,为了使它工作,我认为这个表达式只适用于数组,而在其他情况下,事情会出错。
所以,这是我的问题。
虽然我明白 F(A) , F(B) , 和 F(B)建议,事实上, F(A) , F(B)有效,不 F(f)必须是功能的组成不直接适用?
或者,在范畴论中,它是否允许表达 f的函数组合?和 g就像 g(f)隐含的??

最佳答案

JavaScript 数组的仿函数实现是 Array.map ,它接受数组元素上的函数并在数组上产生函数。如果 f那么是一些功能,就你的图表的分类语言而言,F(f).map(f) (请原谅我滥用符号)。
在图中,标识和组合并不意味着应该如何实现仿函数抽象。相反,这些图表达的是仿函数定律:具体而言,.map(id)必须与 id 相同,以及 .map(f).map(g)必须与 .map(compose(f)(g)) 相同.

关于javascript - JavaScript 中的仿函数实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63390339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com