与 Semigroup 相比,后缀 -al 在 Semigroupal 中表达了什么?
What does suffix -al convey in Semigroupal in contrast to Semigroup?
存在Semigroup和Semigrupal
Semigroup[Int].combine(1, 41) // : Int = 42
Semigroupal[Option].product(Some(1), Some(41)) // : Option[(Int, Int)] = Some(value = (1, 41))
-al 后缀的意思是什么? -al 在什么意义上表达了 Semigroup 和 Semigroupal 之间的区别?同样还有Monoid和Monoidal的语言; -al 在这里是按照相同的思路传达区别吗?
请参阅 semigroupal categories 上的这篇论文。我不相信 Semigroupal
必须实际代表一个半群类别,但它的 product
操作也是半群类别所具有的。
Similarly there is language of Monoid and Monoidal; is -al here conveying the distinction along the same lines?
是的,它以同样的方式相关(但是 monoidal categories 似乎使用得更广泛)。
edmundnoble 表示半群是 abbreviation
Semigroupal is an abbreviation for semigroupal functor which is to a monoidal functor as a semigroup is to a monoid
或如hrhino所说
"semigroupal functor" - "functor" = "semigroupal"
cats.Semigroupal
指向半群al 函子 的概念,其定义类似于
trait SemigroupalFunctor[F[_]] {
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
def map[A, B](fa: F[A])(f: A => B): F[B]
}
半群函子就像没有单位的幺半群函子
trait MonoidalFunctor[F[_]] {
def unit: F[Unit]
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
def map[A, B](fa: F[A])(f: A => B): F[B]
}
现在 cats.Semigroupal
是半群函子的推广,其中只有 product
被提取到它自己的类型 class
trait Semigroupal[F[_]] {
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
}
因此命名仅停在 Semigroupal
而不是 SemigroupalFunctor
。完整的半群函子可以在猫中以 Apply
的形式找到,它结合了 Semigroupal
和 Functor
,如下面的简化视图
所示
trait Semigroupal[F[_]] {
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
}
trait Functor[F[_]] {
def map[A, B](fa: F[A])(f: A => B): F[B]
}
trait Apply[F[_]] extends Semigroupal[F] with Functor[F] {
def ap[A, B](ff: F[A => B])(fa: F[A]): F[B]
}
之前,半群一直被称为笛卡尔
存在Semigroup和Semigrupal
Semigroup[Int].combine(1, 41) // : Int = 42
Semigroupal[Option].product(Some(1), Some(41)) // : Option[(Int, Int)] = Some(value = (1, 41))
-al 后缀的意思是什么? -al 在什么意义上表达了 Semigroup 和 Semigroupal 之间的区别?同样还有Monoid和Monoidal的语言; -al 在这里是按照相同的思路传达区别吗?
请参阅 semigroupal categories 上的这篇论文。我不相信 Semigroupal
必须实际代表一个半群类别,但它的 product
操作也是半群类别所具有的。
Similarly there is language of Monoid and Monoidal; is -al here conveying the distinction along the same lines?
是的,它以同样的方式相关(但是 monoidal categories 似乎使用得更广泛)。
edmundnoble 表示半群是 abbreviation
Semigroupal is an abbreviation for semigroupal functor which is to a monoidal functor as a semigroup is to a monoid
或如hrhino所说
"semigroupal functor" - "functor" = "semigroupal"
cats.Semigroupal
指向半群al 函子 的概念,其定义类似于
trait SemigroupalFunctor[F[_]] {
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
def map[A, B](fa: F[A])(f: A => B): F[B]
}
半群函子就像没有单位的幺半群函子
trait MonoidalFunctor[F[_]] {
def unit: F[Unit]
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
def map[A, B](fa: F[A])(f: A => B): F[B]
}
现在 cats.Semigroupal
是半群函子的推广,其中只有 product
被提取到它自己的类型 class
trait Semigroupal[F[_]] {
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
}
因此命名仅停在 Semigroupal
而不是 SemigroupalFunctor
。完整的半群函子可以在猫中以 Apply
的形式找到,它结合了 Semigroupal
和 Functor
,如下面的简化视图
trait Semigroupal[F[_]] {
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
}
trait Functor[F[_]] {
def map[A, B](fa: F[A])(f: A => B): F[B]
}
trait Apply[F[_]] extends Semigroupal[F] with Functor[F] {
def ap[A, B](ff: F[A => B])(fa: F[A]): F[B]
}
之前,半群一直被称为笛卡尔