问题标签 [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.
haskell - 幺半群和环之间的差异意味着什么?
这是 Haskell 中的幺半群示例:
这是 Clojure 中的幺半群示例:
这是 Haskell 中的环示例:
这是基于此的 Clojure 中的环示例:
似乎 - (借用 Java 用语)环和幺半群之间的区别在于环具有“要实现的接口上的附加方法”。(也许我错了)。现在对我来说,这会对关联性产生影响——但我还没有完全理解这一点。
我的问题是:幺半群和环之间的差异意味着什么?
haskell - 为什么是 MonadPlus 而不是 Monad + Monoid?
我试图了解背后的动机MonadPlus
。Monad
如果已经有 typeclasses和 ,为什么还有必要Monoid
?
当然,实例Monoid
是具体类型,而实例Monad
需要单个类型参数。(请参阅Monoid vs MonadPlus以获得有用的解释。)但是你不能重写任何类型约束
作为和的Monad
组合Monoid
?
以 的guard
函数Control.Monad
为例。它的实现是:
我只能使用Monad
and来实现它Monoid
:
MonadPlus
有人可以澄清和Monad
+之间的真正区别Monoid
吗?
scala - scala:二进制操作的类型界限
问题很简单,我有一个对象用两个参数进行二元运算。我只想添加具有相同类型的燃料,如下所示:
用它:
编译错误:
主要问题是 add 和fuelMonoid 都无法识别我们正在处理相同类型的项目。编译器无法解析类型约束,并推断 Nothing。
为了完成,这里是 Monoid,没什么特别的:
haskell - 为什么我们在那里使用幺半群和仿函数?
我是 Haskell 的新手。
我不知道为什么我们instance Functor Matrix
在下面的代码中使用幺半群以及如何instance Functor Matrix
工作?
我知道函子对于negate
, (*)
, abs
,是必需的signum
,但我需要详细解释。请帮帮我。
mongodb - 尝试为参数化幺半群创建通用零时使用 Nothing 底部类型的问题
这是我的代码。它允许使用 Casbah 创建类型安全的 MongoDB 查询
它工作正常,除了我对这些行不满意:
我认为可以不为每个折叠操作创建这两个对象的新实例,而是使用 val / singleton 类型TypesafeMongoQuery[Nothing]
,因为正在构建的底层 DBObject 总是相同的。
我已经尝试了一些事情,比如到处替换我的签名,[ObjectType,T <% ObjectType]
但没有取得很大的成功。
关于如何解决我的问题的任何想法?
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)) 中。所以我对这个问题不再有任何动机。
coq - Coq 中纸、剪刀、岩石作为 Monoid 实例的证明
所以在学习 Coq 时,我用游戏纸、剪刀、石头做了一个简单的例子。我定义了一个数据类型。
以及三个功能:
我还定义了组合(虽然这应该在标准库的某个地方)
我按照这里的描述实现类幺半群
我终于设法证明你可以在as和asPSR
下形成一个幺半群compose
+
me
1
问题
为什么Instance MSPR : Monoid compose me.
工作证明只是通过应用intros
和reflexivity
?老实说,我做了split
并且intros
知道我在做什么,但是在intros
我得到类似的东西之后
试过apply compose.
了,但没有用。神奇地reflexivity.
解决了它,但我不知道为什么。
边注
如果你这样定义权力,这非常有效
然后Compute (power beats 2) paper.
产生
哪个做到了beats (beats paper) = beats scissor = rock
!
haskell - HXT 中的逻辑或,不重复结果
我在使用HXT时遇到了一点麻烦:我正在尝试在文档中找到与某些条件匹配的所有节点,并且我正在尝试以类似 OR 的方式将 lens/XPaths 组合为谓词,使用Control.Arrow.<+>
, 就像这样指南建议。但是,当我尝试“运行”文档上的箭头时,我得到了重复的结果。有没有一种简单的方法可以删除重复项,或者以更有意义的方式组合测试?这是我的代码:
然而,每次我运行它(在任何网页上),我都会得到重复的结果/节点。我注意到它<+>
是ArrowPlus 类型类的一部分,它模仿了一个幺半群,而ArrowXML是ArrowList和ArrowTree的一个实例,这给了我很多工作要做。我是否必须构造ArrowIf谓词?对此的任何帮助都会很棒:)
haskell - Monoid Instance 表单 HList Record 不起作用
我正在尝试为其定义一个Monoid
实例,HList Record
但我收到了重叠的实例错误消息。我的尝试(代码看起来很复杂,但基本上就是元组实例)
错误信息:
这意味着什么 ?我怎么解决这个问题 ?(我正在使用 GHC 7.6.3)
haskell - 为什么“and []”为真而“or []”为假
为什么空列表上的“and”返回true,是否意味着空列表为True?抱歉,我无法正确阅读和理解这一点,所以请纠正我。谢谢。