问题标签 [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[String] 真的是 Scala 中的 Monoid
我目前正在学习 scala 中的类别理论,并且结合律说
(x + y) + z = x + (y + z)
当使用两个以上的值时,这很好
在这种情况下,顺序无关紧要。但是,如果只有两个值怎么办。如果对于数字它仍然有效(可交换)但是当对字符串做同样的事情时它会失败。
那么说关联性需要交换性来满足幺半群定律是否合法?那么 String Monoid 仍然有效吗?
generics - 获取或实现 String.Zero 和 bool.Zero 一般用于幺半群
我正在尝试将一些现有代码重构为更单一的方法。现有代码包含接口IXInterface
和数字,例如int
和bool
。默认情况下,数字已经具有Zero
,接口将其作为属性获取器,但bool
并string
没有。一种方法是将 bool 和 string 包装在一个接口中,但这很麻烦。
我想如果 F# 语言能够扩展数字类型,也许我也可以针对我的特定情况对字符串和布尔值进行扩展。
上面的编译很好,只要我不尝试将它与字符串或布尔值一起使用:
错误是明确和正确的(我有一个扩展方法,由于明显的原因无法识别),我只是不知道一种非侵入性的方法来摆脱它:
失败并显示“类型 bool 不支持运算符 'get_Zero'
失败并显示”类型字符串不支持运算符 'get_Zero'
haskell - Const Monoid 的应用实现
我不明白如何定义<*>
类型检查。
左侧受Applicative 定义中f
的签名约束<*>
将名称更改为当前情况后:
=> f :: m -> *
。
左侧f
是 的 [first] 参数mappend
。
从 Monoid 的定义
将名称更改为当前情况后:
=> f :: m
。
scala - scalaz的简单聚合?
这是我对简单聚合的实现。
使用 scalaz 是否有更智能的实现?
haskell - 查找元素索引的通用方法
基础库发生了一些重大变化,所以我想知道今天的惯用解决方案是否会涉及fmap
, Maybe
, Monoid
, First
,Foldable
以及其他类。
我想我需要fold
一个Monoid
带有zip [1..]
、、和的复杂结构First
,但找不到将这些东西组合在一起的明显方法。a -> Bool
Maybe
另外,我怀疑大部分代码都在库中。我只是不确定我是否需要(或多少个)newtype
包装器来组合类来获得我需要的结构。
monads - Monad:为什么身份很重要,如果一个系列中没有这样的特殊成员会发生什么?
我正在尝试学习 的概念monad
,我正在观看这个出色的视频Brian Beckend 试图解释什么是 monad。
当他谈到 时monoid
,它是一个类型的集合,它有一个组合规则,这个组合必须遵守 2 个规则:
- 联想:
x @ (y @ z ) = (x @ y) @ z
- 集合中的特殊成员:
x @ id = x and id @ x = x
我正在使用@
代表作文的符号。id
指特殊成员。
第二点是我想要理解的。为什么这很重要?如果没有这样的特殊成员怎么办?
当我学习新概念时,我总是试图将这些抽象的概念与其他一些具体的事物联系起来,这样我才能充分理解和背诵它们。
所以我想要联系monad
和关注monoid
的是lego
。因此,乐高套装中的所有积木构成了一个集合。组合规则是将它们组合成新形状的积木。很明显,组合遵循第一条规则:联想。但是没有特殊的积木可以与其他积木组合并得到相同的回报。所以它不遵守第二条规则。
但是乐高仍然是高度可组合的。当乐高不遵守第二条规则时,遗漏了什么?后果是什么?
或者这样说,与其他monoid
遵守所有这些规则的人相比。其他有什么功能monoid
而乐高没有?
haskell - mempty 的定义不同,具体取决于 mempty 是左参数还是右参数?
我有以下数据类型和半组实例:
我想为上述类型制作一个幺半群实例,但我不知道该怎么做。如果我使用以下定义
它适用于所有输入对<>
,除了我mappend
这将评估为mempty
.
我该如何解决这个问题以使其mempty
有效?似乎没有一些新的语法或概念就无法完成,因为它取决于 mempty 是在左边还是右边......
haskell - monoidal mappend 的自动传播
假设我有一个幺半群定义如下:
由于totalQuantity和orderTotal都是数字,它们还在(+)下形成了一个幺半群。 有什么方法可以定义
所以,我可以只在每个字段上传播mappend调用,而不必手动定义类似
algorithm - 计算幺半群/半群的所有中缀积
简介:一组中缀产品
假设我有一个小组
和元素列表
如果我们的目标是实现一个功能
这样
(我们不关心如果i
>会发生什么j
)
然后我们可以通过预先计算一个前缀表来做到这一点
(1
右侧表示 的单位G
),然后实现f
为
这有效,因为
所以
经过充分的重新关联。
我的问题
如果 G 只是一个幺半群,而不是一个群,我们能否挽救这个想法,或者做一些不那么糟糕的事情?
对于我的特殊问题,如果我们可以做类似G = ([0, 1] ⊂ ℝ, *)
的事情,即我们有来自单位行的实数,我们不能除以0?