小编smo*_*ing的帖子

JavaScript 中的函子实现

我尝试在 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 haskell functor category-theory

6
推荐指数
1
解决办法
268
查看次数

编程中有没有通用的函子(不限于自函子)用法?

编程中有没有通用的函子(不限于自函子)用法?

我理解使用内函子的原因是使结构变得简单,如 monoid 或 monad。

我也最终明白,所有的值都归结为一种编程语言的类别(例如 Hask),但我在这里谈论的是同一类别的字符串、数字、布尔值或函数之间的内函子。

相关问题:

所有的 Haskell 函子都是内函子吗?

函子和自函子的区别

javascript haskell functor category-theory

2
推荐指数
1
解决办法
317
查看次数

Haskell wiki 中的“类别法”

根据 Haskell 维基,

https://en.wikibooks.org/wiki/Haskell/Category_theory#Category_laws

品类法则 品类需要遵循三个法则。首先,也是最简单的,态射的组合需要是结合的。

然而,

关系的组合是结合的。

https://en.wikipedia.org/wiki/Composition_of_relations#Properties

函数的组合总是关联的。

https://en.wikipedia.org/wiki/Function_composition#Properties

那么,在什么情况下,Haskell 社区(或 wiki 假设的人)认为态射的组合不是结合违反规则的?

谢谢。

haskell functional-programming category-theory

0
推荐指数
1
解决办法
193
查看次数

处理“BOX”的 Haskell 函子实现?

在范畴论中,函子的概念如下:

https://ncatlab.org/nlab/show/functor

在此处输入图片说明

在 Haskell 中,Functor类型可以表示为:

fmap :: (a -> b) -> f a -> f b

https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Functor.html

我可以看到两者真的很好地对应。

然而,一旦我们真正尝试将这个 Functor 概念实现到代码中,似乎就不可能定义F或fmap像上图所示那样简单。

事实上,有一篇关于 Functor/Monad 的著名文章。

图片中的函子、应用程序和单子

这里,

足够简单。让我们通过说任何值都可以在上下文中来扩展这一点。现在,您可以将上下文视为一个盒子,您可以在其中放置一个值:

在此处输入图片说明

或者

以下是我们编写 fmap (+3)(仅 2)时幕后发生的事情:

在此处输入图片说明

我一直觉得Functor是函子范畴论的概念,并从“盒子”,包装及解包到/的概念不匹配良好。

问题点 1。

fmap :: (a -> b) -> f a -> f b

https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Functor.html

在 Haskell 中,wrap&unwrap to/from "BOX" 的实际实现在哪里?

问题点2。

为什么函子范畴论的概念和包装及展开从“盒子” /的概念不匹配呢?

编辑:

即使对于IOfunctor,在组合过程中,f也是解包的:

haskell functor category-theory category-abstractions

-1
推荐指数
2
解决办法
180
查看次数