奇怪的scala类型“=>;:[uuquot;
我在scalaz中看到了奇怪的scala类型“=>;:[uuquot;,scala,Scala,我在scalaz中看到了“A=>:A”或“=>:[A,A]”类型签名 我认为这是某种scala嵌入式类型,但这是什么?这里没有特别的魔力=>:是类型的名称,并且是参数化类型A=>:A与=>:[A,A]相同,只是前者是用中缀符号书写的。如果您是从Scala开始的,那么scalaz可能不是最好的起点。在trait类别中指定,它需要一个更高级的类型构造函数,需要键入参数并将其命名为=>:。无论何时创建类别,都必须传入该类型构造函数 您可以看到这样一个示例: 这里,类型构造函数==作为类别的参数给出,
“A=>:A”或“=>:[A,A]”
类型签名
我认为这是某种scala嵌入式类型,但这是什么?这里没有特别的魔力
=>:
是类型的名称,并且是参数化类型A=>:A
与=>:[A,A]
相同,只是前者是用中缀符号书写的。如果您是从Scala开始的,那么scalaz可能不是最好的起点。在trait类别中指定,它需要一个更高级的类型构造函数,需要键入参数并将其命名为=>:
。无论何时创建类别
,都必须传入该类型构造函数
您可以看到这样一个示例:
这里,类型构造函数==
作为类别
的参数给出,其中==
定义为:
在category trait中,您将传入的内容命名为=>:
,以使用它。谢谢!为了好玩,我刚开始学习scalaz,我想是时候开始学习scalaz了,但这对我来说太早了。。。
implicit val leibniz: Category[===] = new Category[===] {
def id[A]: (A === A) = refl[A]
type ===[A,B] = Leibniz[⊥, ⊤, A, B]