问题标签 [semigroup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
751 浏览

sorting - 你能把冒泡排序表述为一个幺半群或半群吗?

给定以下冒泡排序的伪代码

这是冒泡排序作为 Scala 的代码

这是 Haskell 的实现:

是否可以将其表述为幺半群或半群?

0 投票
2 回答
770 浏览

scala - 你能为基数排序制定一个幺半群或半群吗?

这是基数排序的伪代码:

这是基数排序的 Scala 代码:

这是基数排序的 Haskell 代码:

我的问题是:你能为基数排序制定一个幺半群或半群吗?

0 投票
1 回答
1203 浏览

c - 如何通过高效算法获得有限集合上的所有代数关联运算?

一组 2 个元素的二元运算数是2^(2*2)=16. 在此处输入图像描述
该集合上的关联二元运算数仅为 8。
在此处输入图像描述
一组 3 个元素的二元运算数为 3^(3*3)=19683。
该集合上的关联二元运算数只有 113。如何知道一组 n 个元素有多少关联二元运算?

此外,为了获得所有这 113 次操作并写入文件,还需要编写一个程序。
如果我将尝试获取所有 19683 操作,然后检查所有 19683 操作的关联属性“a*(b c)==(a b)*c”,这将起作用,但这需要很长时间=4个元素!
如何编写一个高效的算法来解决这个任务?
请帮我!

0 投票
1 回答
146 浏览

scala - 为什么scalaz Semigroup不是协变的?

Scalaz SemiGroup 不是协变的原因很简单:

https://github.com/scalaz/scalaz/blob/series/7.1.x/core/src/main/scala/scalaz/Semigroup.scala

https://github.com/scalaz/scalaz/blob/series/7.1.x/core/src/main/scala/scalaz/syntax/SemigroupSyntax.scala

谢谢。

0 投票
2 回答
245 浏览

typeclass - 将命名实例用于其他实例

我正在尝试在 operator和 operator上对我的自定义数据类型Semigroup创建一个和VerifiedSemigroup实例:Bool&&||

所以我首先为over 运算符创建一个命名实例Semigroup&&

但是在创建VerifiedSemigroup实例时,我如何告诉 Idris 使用 的TodosSemigroup实例Lógico

该代码给了我以下错误:

详细说明类型时Prelude.Algebra.Main.TodosVerifiedSemigroup,方法semigroupOpIsAssociative:无法解析类型类Semigroup Lógico

0 投票
1 回答
94 浏览

scala - 为什么 scalaz 中没有 TrieMap 的 Semigroup 实例

虽然我能做到

好像没有支持

为什么 ?

0 投票
1 回答
290 浏览

scala - 为什么 Scalaz 中没有 A => M[A] 的 >=> 半群?

这是我上一个问题的后续

Kleisli定义了两个运算符<=<(compose) 和>=>(andThen)。对>=>我来说看起来很自然,我不明白怎么<=<会有用。

此外,看起来没有>=>半群,A => M[A]<=<半群确实存在。

其背后的原理是什么?

0 投票
1 回答
66 浏览

haskell - mempty 的定义不同,具体取决于 mempty 是左参数还是右参数?

我有以下数据类型和半组实例:

我想为上述类型制作一个幺半群实例,但我不知道该怎么做。如果我使用以下定义

它适用于所有输入对<>,除了我mappend

这将评估为mempty.

我该如何解决这个问题以使其mempty有效?似乎没有一些新的语法或概念就无法完成,因为它取决于 mempty 是在左边还是右边......

0 投票
1 回答
60 浏览

algorithm - 计算幺半群/半群的所有中缀积

简介:一组中缀产品

假设我有一个小组

和元素列表

如果我们的目标是实现一个功能

这样

(我们不关心如果i>会发生什么j

然后我们可以通过预先计算一个前缀表来做到这一点

1右侧表示 的单位G),然后实现f

这有效,因为

所以

经过充分的重新关联。

我的问题

如果 G 只是一个幺半群,而不是一个群,我们能否挽救这个想法,或者做一些不那么糟糕的事情?

对于我的特殊问题,如果我们可以做类似G = ([0, 1] ⊂ ℝ, *)的事情,即我们有来自单位行的实数,我们不能除以0?

0 投票
1 回答
156 浏览

scala - 定义一个依赖于自身的 Semigroup 实例

... 或者 Haskell 程序员不得不编写 Scala 代码的事故,第 5 部分。

我在 Scala 中有以下结构:

而且,使用 Cats,我想定义Semigroup它的一个实例。

这将导致以下错误:

所以,我的猜测是,由于我正在为SemigroupScala 编译器定义实例,因此无法派生Semigroupof的实例Map[String, ResourceTree]。这似乎得到了证实,因为编译了以下实例:

我真的希望我错了,因为如果这是在 Scala 中为 Semigroup 定义实例的正确方法,我将开始考虑放弃用这种语言做 FP 的想法。

有没有更好的办法?