所以,我不明白为什么要编译它?
type <=[B, A] = A => B
type F[A] = Double <= A //why our alias <= is allowed here?
形成允许这样构造的类型别名的语法规则是什么?我们只能在订单=>像这种情况一样?
有一个非常简单的规则,即每种类型的A B C
都与B[A, C]
相同。显然,这只适用于具有2个类型参数的类型。
我找不到=>的定义;
是的,它嵌入在编译器实现/语言规范中
但是,正如您刚才所展示的,在userland上重新实现非常容易;它看起来是这样的:
type =>[+A, +B] = Function1[A, B]
Scala编译器如何解析类似别名表达式的Type1 Type2 Type3 类型序列
语言规范说它支持中缀类型,所以像A OP B
等同于OP[A, B]