奇怪的scala类型“=>:[_,_]”

时间:2014-03-08 06:02:47

标签: scala

我在scalaz中看到了"A =>: A" or "=>:[A, A]"类型签名。

https://github.com/scalaz/scalaz/blob/scalaz-seven/core/src/main/scala/scalaz/Category.scala

我认为这是某种scala嵌入式,但是这是什么?

2 个答案:

答案 0 :(得分:3)

这里没有特别的魔力。 =>:是类型的名称,它是参数化类型。 A =>: A=>:[A, A]相同,但前者以中缀表示法编写。如果你开始使用Scala,那么scalaz可能不是最佳起点。

答案 1 :(得分:2)

在行10中,特征Category指定需要更高级的类型构造函数,需要输入参数并将其命名为=>:。无论何时创建Category,都必须在。

中传递该类型构造函数

您可以看到here的示例:

implicit val leibniz: Category[===] = new Category[===] {
    def id[A]: (A === A) = refl[A]

此处类型构造函数===作为Category的参数提供,其中===被定义为here

type ===[A,B] = Leibniz[⊥, ⊤, A, B]

在类别特征中,您可以将传递的任何内容命名为=>:以使用它。