问题标签 [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 投票
2 回答
200 浏览

haskell - 幺半群和环之间的差异意味着什么?

这是 Haskell 中的幺半群示例:

这是 Clojure 中的幺半群示例:

这是 Haskell 中的环示例:

这是基于此的 Clojure 中的环示例:

似乎 - (借用 Java 用语)环和幺半群之间的区别在于环具有“要实现的接口上的附加方法”。(也许我错了)。现在对我来说,这会对关联性产生影响——但我还没有完全理解这一点。

我的问题是:幺半群和环之间的差异意味着什么?

0 投票
4 回答
2023 浏览

haskell - 为什么是 MonadPlus 而不是 Monad + Monoid?

我试图了解背后的动机MonadPlusMonad如果已经有 typeclasses和 ,为什么还有必要Monoid

当然,实例Monoid是具体类型,而实例Monad需要单个类型参数。(请参阅Monoid vs MonadPlus以获得有用的解释。)但是你不能重写任何类型约束

作为和的Monad组合Monoid

以 的guard函数Control.Monad为例。它的实现是:

我只能使用Monadand来实现它Monoid

MonadPlus有人可以澄清和Monad+之间的真正区别Monoid吗?

0 投票
1 回答
81 浏览

scala - scala:二进制操作的类型界限

问题很简单,我有一个对象用两个参数进行二元运算。我只想添加具有相同类型的燃料,如下所示:

用它:

编译错误:

主要问题是 add 和fuelMonoid 都无法识别我们正在处理相同类型的项目。编译器无法解析类型约束,并推断 Nothing。

为了完成,这里是 Monoid,没什么特别的:

0 投票
1 回答
205 浏览

haskell - 为什么我们在那里使用幺半群和仿函数?

我是 Haskell 的新手。
我不知道为什么我们instance Functor Matrix在下面的代码中使用幺半群以及如何instance Functor Matrix工作?

我知道函子对于negate, (*), abs,是必需的signum,但我需要详细解释。请帮帮我。

0 投票
1 回答
39 浏览

mongodb - 尝试为参数化幺半群创建通用零时使用 Nothing 底部类型的问题

这是我的代码。它允许使用 Casbah 创建类型安全的 MongoDB 查询

它工作正常,除了我对这些行不满意:

我认为可以不为每个折叠操作创建这两个对象的新实例,而是使用 val / singleton 类型TypesafeMongoQuery[Nothing],因为正在构建的底层 DBObject 总是相同的。

我已经尝试了一些事情,比如到处替换我的签名,[ObjectType,T <% ObjectType]但没有取得很大的成功。

关于如何解决我的问题的任何想法?

0 投票
1 回答
166 浏览

haskell - 为什么没有 fold' 方法?

我注意到 Foldable 类包含 fold、foldl、foldr、foldl' 和 foldr',但没有 fold'(对于严格的单曲面折叠)

如何使用 IntMap 模拟 fold' 的行为(实现为树,但不提供对内部节点的直接访问)。


动机:

特别是,如果我有一个包含 M 个大小为 K 的 IntMap 的 IntMap(总大小 N = M*K),我想在 O(N * log(M)) 大 O 运行时间内将它们联合起来。就像是:

这会起作用,因为 IntMap 是 Monoid 的一个实例,其中 mappend 定义为 union。请注意,一般来说,使用 foldl' 或 foldr' 在理论上较慢,因为它需要 Omega(N * log N) 最坏情况下的运行时间。诚然,这在实践中可能是一个微不足道的差异,但我很迂腐,足以关心理论上的最佳界限


哎呀,楼上说错了。我更仔细地检查了它,现在我意识到无论您使用 fold 还是 foldl 或 foldr 都没有关系,运行时间将在 O(N * log(M)) 中。所以我对这个问题不再有任何动机。

0 投票
2 回答
183 浏览

coq - Coq 中纸、剪刀、岩石作为 Monoid 实例的证明

所以在学习 Coq 时,我用游戏纸、剪刀、石头做了一个简单的例子。我定义了一个数据类型。

以及三个功能:

我还定义了组合(虽然这应该在标准库的某个地方)

我按照这里的描述实现类幺半群

我终于设法证明你可以在as和asPSR下形成一个幺半群compose+me1

问题

为什么Instance MSPR : Monoid compose me.工作证明只是通过应用introsreflexivity?老实说,我做了split并且intros知道我在做什么,但是在intros我得到类似的东西之后

试过apply compose.了,但没有用。神奇地reflexivity.解决了它,但我不知道为什么。

边注

如果你这样定义权力,这非常有效

然后Compute (power beats 2) paper.产生

哪个做到了beats (beats paper) = beats scissor = rock

0 投票
1 回答
71 浏览

haskell - HXT 中的逻辑或,不重复结果

我在使用HXT时遇到了一点麻烦:我正在尝试在文档中找到与某些条件匹配的所有节点,并且我正在尝试以类似 OR 的方式将 lens/XPaths 组合为谓词,使用Control.Arrow.<+>, 就像这样指南建议。但是,当我尝试“运行”文档上的箭头时,我得到了重复的结果。有没有一种简单的方法可以删除重复项,或者以更有意义的方式组合测试?这是我的代码:

然而,每次我运行它(在任何网页上),我都会得到重复的结果/节点。我注意到它<+>ArrowPlus 类型类的一部分,它模仿了一个幺半群,而ArrowXMLArrowListArrowTree的一个实例,这给了我很多工作要做。我是否必须构造ArrowIf谓词?对此的任何帮助都会很棒:)

0 投票
1 回答
114 浏览

haskell - Monoid Instance 表单 HList Record 不起作用

我正在尝试为其定义一个Monoid实例,HList Record但我收到了重叠的实例错误消息。我的尝试(代码看起来很复杂,但基本上就是元组实例)

错误信息:

这意味着什么 ?我怎么解决这个问题 ?(我正在使用 GHC 7.6.3)

0 投票
7 回答
1355 浏览

haskell - 为什么“and []”为真而“or []”为假

为什么空列表上的“and”返回true,是否意味着空列表为True?抱歉,我无法正确阅读和理解这一点,所以请纠正我。谢谢。