Scala~>(代字号大于)运算符

And*_*rea 28 scala operators

我有以下scala类定义(在论文中找到),建模类别:

trait Category[~>[_, _]] {
    def compose[A, B, C]
     (f: B ~> C)
     (g: A ~> B)
     : A ~> C
    def id[A]: A ~> A
}
Run Code Online (Sandbox Code Playgroud)

谁能解释一下'type>参数中的'〜>'是什么意思,并且在方法返回类型中?或者引导我找到解释它的资源......我是Scala的新手(来自Java),请原谅我,如果这是scala用户应该知道的事情...提前谢谢你

Deb*_*ski 31

~>只是type-parameter的占位符名称Category.喜欢Tclass Option[T].

此外,Scala语法允许您B ~> C作为速记写入~>[B, C].

如果你重命名它可能会变得更清楚:

trait Category[Mapping[_, _]] {
  def compose[A, B, C](f: Mapping[B, C])(g: Mapping[A, B]): Mapping[A, C]
  def id[A]: Mapping[A, A]
}
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句:之所以选择"运算符",即运算符而不是字母符号,是希望在类别理论领域中〜>很容易转化为"态射"的概念(又名"映射", "箭头"等).通常你应该小心操作员. (8认同)