【问题标题】:Scala ~> (tilde greater than) operatorScala ~>(波浪号大于)运算符
【发布时间】:2012-04-22 13:52:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: scala operators


    【解决方案1】:

    ~> 只是Category 类型参数的占位符名称。就像class Option[T] 中的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]
    }
    

    【讨论】:

    • 现在更清楚了...我想我会习惯于随意使用奇怪的字符来命名事物(不像Java)。事实上,我认为 '~>' 意味着一些特别的东西,但它可以被任何东西代替,因为我理解正确..非常感谢你!
    • 是的,这完全是任意的(当然,在 Scala 的标识符命名规则之内)。
    • 顺便说一句:之所以选择“运算符”,即运算符字符而不是字母字符,是希望在范畴论领域〜>容易转化为“态射”(又名“映射”、“箭头”等)。通常你应该小心操作符。
    【解决方案2】:

    这在Akka streams 中也用作边缘运算符。

    【讨论】:

      猜你喜欢
      • 2019-07-07
      • 2012-01-08
      • 2011-11-04
      • 2019-05-17
      • 2015-01-01
      相关资源
      最近更新 更多