问题标签 [monoids]

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 回答
151 浏览

scala - 子类型的 Monoid 应用程序不使用附加运算符编译,但在显式调用时工作

我正在制作一个用于组合重试执行策略的 Monoid,而 RetryExecutor[T] 是基于类型的。我已经定义了以下基本类型和一个幺半群:

和一些基本类型,如:

我可以手动组合它们:

但是当我尝试使用附加运算符时:

我得到一个编译错误:

0 投票
4 回答
3849 浏览

haskell - 幺半群的实际用途是什么?

我正在阅读Learn You a Haskell并且我已经介绍了应用程序,现在我在使用 monoids。我对两者的理解都没有问题,尽管我发现 applicative 在实践中很有用,而 monoid 并非如此。所以我想我不了解 Haskell 的一些东西。

首先,说到Applicative,它创建了类似统一语法的东西来对“容器”执行各种操作。所以我们可以使用普通函数对Maybe, 列表执行操作IO(我应该说 monads 吗?我还不知道 monads ),函数:

所以 applicative 是一种抽象。我认为我们可以没有它,但它有助于清楚地表达一些想法模式,这很好。

现在,让我们来看看Monoid。它也是抽象且非常简单的一种。但它对我们有帮助吗?对于书中的每个示例,似乎都有更清晰的方法来做事:

所以我们注意到了一些模式并创建了新的类型类......好吧,我喜欢数学。但是从实际的角度来看,有什么意义Monoid呢?它如何帮助我们更好地表达想法?

0 投票
4 回答
2933 浏览

class - Haskell 单体可折叠玫瑰树

我需要为玫瑰树数据结构制作一个可折叠的实例:

使用以下幺半群和玫瑰相关的类/实例:

我尝试了什么:

但是,这无法正常工作,对于系统检查,我收到错误:

但是我不确定为什么它不起作用,有人可以帮我吗?

提前致谢!

最好的问候, Skyfe。

0 投票
1 回答
164 浏览

haskell - Foldable如何知道mappend的实现

我正在“ http://learnyouahaskell.com ”的帮助下学习 Haskell。我正在关注作为以下实例的 BST(二叉搜索树)的示例Foldable

当我运行时,F.foldMap (\x -> [x]) testTree我得到一个代表折叠树的列表。我实现了自己的数据类型:

并运行此命令:F.foldMap (\x -> OnlySum x) testTree获取折叠为 this 的树OnlySum {value = 34}

问题是:Foldable 如何知道传递给的函数的返回类型mempty以及mappend取决于f传递给的函数的定义foldMap它是推断它还是 Haskell 有办法自动知道哪个是定义?

0 投票
1 回答
137 浏览

haskell - 状态单子的 Haskell 数据类型计数

如何将以下数据类型用于它的 Monoid 实例?

例如,我想出类似的东西:

但这给了我一个解析错误'0'......也许我做错了并且误解了数据类型/幺半群,但我无法弄清楚。如果有人可以帮助我,将不胜感激!

最好的问候,Skyfe。

0 投票
1 回答
881 浏览

haskell - 使用 HSpec 和 QuickCheck 验证 Data.Monoid 属性

我正在尝试使用 HSpec 和 QuickCheck 来验证 Monoids 的属性(关联性和标识元素)。我将验证特定实例,但希望保持大部分代码多态。这是我几个小时后想出的:

我想要的是多态的

并稍后指定实际的 Monoid 实例(Sum、Product)和类型(Int、Double)。问题是它不会进行类型检查。我不断得到

我知道我需要将多态版本中的 Monoid 约束为 Arbitrary、Eq 和 Show,但我不知道如何。

问题是如何以多态的方式表达 Monoid 的规范并避免代码重复?

0 投票
2 回答
334 浏览

haskell - Haskell:更好的写作方式可能是 Endo?

由于network-api-support包,我刚刚发现了 Endo 类型,并且我发现需要能够将 Maybe 值放入 Endo 中。因此,我编写了一个名为 MaybeEndo 的函数。这是一个使用它的例子:

令我印象深刻的是,这似乎应该已经封装到某种类型的模式中。

0 投票
2 回答
2444 浏览

haskell - Haskell 中的 Monoid Bool

当然,数据类型并不准确,但这是如何(或多或少)Monoid Bool实现的?

Bool如果是/不是,制作's mappendan ORvs的理由是什么AND

0 投票
1 回答
281 浏览

haskell - Haskell - 实现 Monoid 如果运算符不是关联的会发生什么

根据定义或幺半群,二元运算符必须是关联的,例如A op (B op C) == (A op B) op C

haskell 中的基本mconcat定义是:

既然我知道函数的实现细节mconcat,那么定义和使用函数不关联的假幺半群会发生什么不好的事情吗?例如定义减法或除法的实例。

这可能有用还是我错过了重点?

0 投票
1 回答
137 浏览

scala - 有没有处理 Option[Monoid[T]] mappend 操作的好方法?

如果我有一个具有零和映射的 Monoid[T],那么在我看来,逻辑上的结果是

对于 a 和 b 应该分别是 identity 和 x.mappend(z.get) 。对于 i 和 j 也是如此。

我现在拥有的看起来像:

是否有一个预先存在的结构来表达这一点,或者这在数学上是不正确的?