17得票2回答
为什么Either没有替代实例,但有一个类似于Alternative的半群?

我是Haskell的新手,我想知道为什么没有Either的替代实例,但有一个表现得像alternative的semigroup:instance Semigroup (Either a b) where Left _ <> b = b a <> _ = a 这...

13得票2回答
liftA2是否保留结合性?

假设有一个操作(??),使得 (a ?? b) ?? c = a ?? (b ?? c) 也就是说,(??) 是可结合的 必须满足这种情况吗? liftA2 (??) (liftA2 (??) a b) c = liftA2 (??) a (liftA2 (??) b c) 也就...

11得票2回答
使用命名实例来创建其他实例。

我正在尝试在我的自定义Bool数据类型上,同时在运算符&&和||上创建Semigroup和VerifiedSemigroup实例:%case data Lógico = Cierto | Falso (&&) : Lógico -> Lógico -&g...

11得票1回答
如何通过高效算法获取有限集合上的所有代数结合运算?

一个由2个元素组成的集合上的二元运算数量为2^(2*2)=16。 在这个集合上可结合的二元运算数量只有8个。 一个由3个元素组成的集合上的二元运算数量为3^(3*3)=19683。 在这个集合上可结合的二元运算数量只有113个。 如何知道n个元素组成的集合上可结合的二元运算具体有多...

8得票2回答
你能为基数排序制定一个幺半群吗?

This is the pseudocode for the radix sort: Pseudocode for Radix Sort: Radix-Sort(A, d) // Each key in A[1..n] is a d-digit integer. (Digits are //...

7得票3回答
Data.Semigroup中的ArgMin和ArgMax类型同义词的目的是什么?

在 Haskell 中,base 库在 Data.Semigroup 中有以下类型同义词: type ArgMin a b = Min (Arg a b) type ArgMax a b = Max (Arg a b) 这里是两个哈达克链接:ArgMin 和 ArgMax 这两个类...

7得票2回答
为什么Maybe的Semigroup实例偏向于Just,而Monoid使用Nothing作为空元素?

Maybe 表示在计算过程中由于错误可能不会产生结果。因此,这种计算必须被短路。 现在 Maybe 的 Semigroup/Monoid 实例似乎违反了这个语义,因为前者偏向于 Just,而后者将错误情况 Nothing 视为其空元素: Just "foo" <> Nothin...