相关疑难解决方法(0)

monoid同态到底是什么?

我已经从Monoid Morphisms,Products和Coproducts中阅读了有关Monoid同态的知识,并且无法理解100%。

作者说(强调原文):

length函数从映射到StringInt 同时保留类半体结构。这种以一种保存方式从一个单半体映射到另一个单半体的函数称为单半体同态。通常,对于monoid MN,是同态f: M => N,以及所有值 x:My:M以下等式成立:

f(x |+| y) == (f(x) |+| f(y))

f(mzero[M]) == mzero[N]
Run Code Online (Sandbox Code Playgroud)

他的意思是说,由于数据类型StringInt是monoid ,并且函数length映射String => Int保留了monoid结构(Int是monoid),所以称为monoid同态,对吗?

haskell functional-programming scala category-theory monoids

60
推荐指数
2
解决办法
2432
查看次数

什么是同构和同态

我试图在编程环境中理解同构和同态,需要一些帮助.

在FPiS一书中,它解释了:

在此输入图像描述 在此输入图像描述

让我们从同态开始:

"foo".length + "bar".length == ("foo" + "bar").length
Run Code Online (Sandbox Code Playgroud)

这里,长度是String to Int保留幺半群结构的函数.

  • 为什么这是一个同态?

  • 为什么它保留了幺半群结构?

  • 例如maplist函数上是同态吗?

关于同构,我从一本书中得到了以下解释:

M和N之间的幺半群同构具有两个同态f和g,其中f和T g以及g和T f都是同一性函数.例如,串联的String和List [Char] monoid是同构的.两个布尔幺半群(假,||)和(真,&&)也是同构的,通过!(否定)功能.

为什么(false, ||), (true, &&)String and List[Char] monoids with concatenation同构?

functional-programming scala

8
推荐指数
1
解决办法
343
查看次数