问题标签 [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.
scala - 子类型的 Monoid 应用程序不使用附加运算符编译,但在显式调用时工作
我正在制作一个用于组合重试执行策略的 Monoid,而 RetryExecutor[T] 是基于类型的。我已经定义了以下基本类型和一个幺半群:
和一些基本类型,如:
我可以手动组合它们:
但是当我尝试使用附加运算符时:
我得到一个编译错误:
haskell - 幺半群的实际用途是什么?
我正在阅读Learn You a Haskell并且我已经介绍了应用程序,现在我在使用 monoids。我对两者的理解都没有问题,尽管我发现 applicative 在实践中很有用,而 monoid 并非如此。所以我想我不了解 Haskell 的一些东西。
首先,说到Applicative
,它创建了类似统一语法的东西来对“容器”执行各种操作。所以我们可以使用普通函数对Maybe
, 列表执行操作IO
(我应该说 monads 吗?我还不知道 monads ),函数:
所以 applicative 是一种抽象。我认为我们可以没有它,但它有助于清楚地表达一些想法模式,这很好。
现在,让我们来看看Monoid
。它也是抽象且非常简单的一种。但它对我们有帮助吗?对于书中的每个示例,似乎都有更清晰的方法来做事:
所以我们注意到了一些模式并创建了新的类型类......好吧,我喜欢数学。但是从实际的角度来看,有什么意义Monoid
呢?它如何帮助我们更好地表达想法?
class - Haskell 单体可折叠玫瑰树
我需要为玫瑰树数据结构制作一个可折叠的实例:
使用以下幺半群和玫瑰相关的类/实例:
我尝试了什么:
但是,这无法正常工作,对于系统检查,我收到错误:
但是我不确定为什么它不起作用,有人可以帮我吗?
提前致谢!
最好的问候, Skyfe。
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 有办法自动知道哪个是定义?
haskell - 状态单子的 Haskell 数据类型计数
如何将以下数据类型用于它的 Monoid 实例?
例如,我想出类似的东西:
但这给了我一个解析错误'0'......也许我做错了并且误解了数据类型/幺半群,但我无法弄清楚。如果有人可以帮助我,将不胜感激!
最好的问候,Skyfe。
haskell - 使用 HSpec 和 QuickCheck 验证 Data.Monoid 属性
我正在尝试使用 HSpec 和 QuickCheck 来验证 Monoids 的属性(关联性和标识元素)。我将验证特定实例,但希望保持大部分代码多态。这是我几个小时后想出的:
我想要的是多态的
并稍后指定实际的 Monoid 实例(Sum、Product)和类型(Int、Double)。问题是它不会进行类型检查。我不断得到
我知道我需要将多态版本中的 Monoid 约束为 Arbitrary、Eq 和 Show,但我不知道如何。
问题是如何以多态的方式表达 Monoid 的规范并避免代码重复?
haskell - Haskell:更好的写作方式可能是 Endo?
由于network-api-support包,我刚刚发现了 Endo 类型,并且我发现需要能够将 Maybe 值放入 Endo 中。因此,我编写了一个名为 MaybeEndo 的函数。这是一个使用它的例子:
令我印象深刻的是,这似乎应该已经封装到某种类型的模式中。
haskell - Haskell 中的 Monoid Bool
当然,数据类型并不准确,但这是如何(或多或少)Monoid Bool
实现的?
Bool
如果是/不是,制作's mappend
an OR
vs的理由是什么AND
?
haskell - Haskell - 实现 Monoid 如果运算符不是关联的会发生什么
根据定义或幺半群,二元运算符必须是关联的,例如A op (B op C) == (A op B) op C
。
haskell 中的基本mconcat
定义是:
既然我知道函数的实现细节mconcat
,那么定义和使用函数不关联的假幺半群会发生什么不好的事情吗?例如定义减法或除法的实例。
这可能有用还是我错过了重点?
scala - 有没有处理 Option[Monoid[T]] mappend 操作的好方法?
如果我有一个具有零和映射的 Monoid[T],那么在我看来,逻辑上的结果是
对于 a 和 b 应该分别是 identity 和 x.mappend(z.get) 。对于 i 和 j 也是如此。
我现在拥有的看起来像:
是否有一个预先存在的结构来表达这一点,或者这在数学上是不正确的?