Monoid和函子之间是什么关系?

问题描述 投票:1回答:1

我正在尝试了解函子和半模态之间的关系。它们经常一起被提及,但是我还不能完全理解它们。

我理解,简单地说,在程序中,可以将monoid视为具有关联的append / concat函数的结构或数据类型,该函数用于组合结构中的元素以及标识元素(如果您可交换地组合标识,值在您的结构中带有元素时,它将始终返回相同的元素。

[我也认识到,在编程​​函子时,可以将其视为类似于Array.prototype.map()的映射操作的类似集合的结构。

有人可以帮我在这里看到大图景吗?另外,如果我对这些概念的理解有任何遗漏,请随时告诉我。

functional-programming functor monoids semigroup
1个回答
0
投票

这两个术语均来自类别理论的Math分支,该分支研究元素的分类,它们之间的关系以及元素之间的功能可组合性。该学科在函数式编程中具有强大的影响力,因此,这些术语通常出现在有关这些范例的讨论中。

实际上是将函子和monoid术语翻译成程序:

Functor保留两个不同cathegories的元素之间的结构和关系,这意味着Functor是提供一个元素的构造函数的“结构”。(保留该结构,因为每个元素都映射到一个元素中另一个cathegory)和一个map函数(保留将原始cathegory的每个功能映射到目标对象的“功能”关系)

Monoid是一个endofunctor(定义源和目标cathegory相同的functor),用于定义操作和关联操作,例如,列表是一个monoid,因为它定义了一个identity操作(空列表)和关联操作(附加)

© www.soinside.com 2019 - 2024. All rights reserved.