首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数编程中多元素数据结构的名称?

函数编程中多元素数据结构的名称?
EN

Stack Overflow用户
提问于 2020-06-07 09:31:09
回答 1查看 56关注 0票数 1

多元素数据结构,如StreamsLists,似乎有一些不同的属性.例如,

它们是Monoids

  • They的
  • 是可合并的(您可以使用默认的Semigroup实现合并元素,而不知道元素类型)

单元素数据结构也是Monoids,但如果不知道它们包含的type (例如OptionFuture等),就不能有半组实现。它们也不能保证元素在添加/合并后仍然“存在”。

这种类型的数据结构是否有包含已添加(合并)的所有元素的名称?我的目标是为这些类型的数据结构创建一个独特的类型类,以便将它们与其他Monoids/半群区分开来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 09:21:46

从技术上讲,你要求的是一个单一的基座。如果您希望能够将AA组合成另一个A,那么有一些空A的想法不会改变结果,而且操作是关联的--那么不管是哪种情况,这都是单样的:

  • A是一些普通的类型,您可以将其合并为numbers
  • A是一些F[B],其中单线属性属于F,对于所有可能的B

都是正确的。

出于实际原因,猫中有两个类型的类:

  • Monoid[A],它为您提供了combine(a1: A, a2: A): Aempty: A以及您可以使用这些two
  • MonoidK[F[_]],(基本上是工厂)实现的所有功能:[A] => Monoid[F[A]],但是有了允许您延迟A应用的实用程序,例如combineK[A](fa1: F[A], fa2: F[A]): F[A]emptyK[A]: F[A]

半群也是如此,这里有SemigroupSemigroupK,还有Semigrupal,它是关于类型的半群( AB的加法,意味着元组(A, B)的创建,(A + B) + C = A + (B + C),如果我们假设相等直到同构)。这表明我们不需要发明新的代数,旧的代数工作得很好,尽管有时不同的用例可能需要稍微不同的实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62243417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档