smo*_*ing 6 javascript haskell functor category-theory
我尝试在 JavaScript 中实现一个 Functor。
Functor的定义图如下:
或在 nLab
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]
Run Code Online (Sandbox Code Playgroud)
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)
含蓄?
在我这里得到了很多答案并且对它们不满意之后,我自己解决了。
就nLab中的图表而言:
这里,X,Y,Z实际上是恒等态射。
所以X、Y、Z和f、g、h的类型是相同的。
因此,我们可以写F(f)
或F(X)
一致。
根据这个质量检查流程,尽管许多人从未提及也不同意我最初的回应,但这似乎是一个已知的事实。
https://mathoverflow.net/questions/336533/why-is-an-object-not-define-as-identity-morphism
https://ncatlab.org/nlab/show/single-sorted+definition+of+a+category
从范畴的单序定义来看,对象X,Y,Z是恒等态射。
归档时间: |
|
查看次数: |
268 次 |
最近记录: |