Scalaz Functor 类型类特殊符号
Scalaz Functor typeclass special symbols
最近我遇到了这个 Scalaz 代码(例如 https://github.com/scalaz/scalaz/blob/series/7.2.x/core/src/main/scala/scalaz/Functor.scala):
def compose[G[_]](implicit G0: Functor[G]): Functor[λ[α => F[G[α]]]] =
new CompositionFunctor[F, G] {
implicit def F = self
implicit def G = G0
}
"Functor"里面的类型表达式的meaning/purpose是什么,即λ[α => F[G[α]]]?到目前为止,我只看到了类型别名,例如在 http://like-a-boss.net/2014/09/27/type-lambda-in-scala.html
new Functor[A, ({ type Alias[A] = Tuple2[X, A]})#Alias]
此外,Intellij Idea (14.0.3) 无法解析符号。 Scalaz 由 sbt 在 Intellij 之外构建,然后导入到 Intellij 中。知道会发生什么情况吗?
此语法由 kind-projector
Scala 插件启用。它允许以更简洁的方式编写类型 lambda:
Functor[λ[α => F[G[α]]]]
没有插件它看起来像:
Functor[({type λ[x] = G[F[x]]})#λ]
最近我遇到了这个 Scalaz 代码(例如 https://github.com/scalaz/scalaz/blob/series/7.2.x/core/src/main/scala/scalaz/Functor.scala):
def compose[G[_]](implicit G0: Functor[G]): Functor[λ[α => F[G[α]]]] =
new CompositionFunctor[F, G] {
implicit def F = self
implicit def G = G0
}
"Functor"里面的类型表达式的meaning/purpose是什么,即λ[α => F[G[α]]]?到目前为止,我只看到了类型别名,例如在 http://like-a-boss.net/2014/09/27/type-lambda-in-scala.html
new Functor[A, ({ type Alias[A] = Tuple2[X, A]})#Alias]
此外,Intellij Idea (14.0.3) 无法解析符号。 Scalaz 由 sbt 在 Intellij 之外构建,然后导入到 Intellij 中。知道会发生什么情况吗?
此语法由 kind-projector
Scala 插件启用。它允许以更简洁的方式编写类型 lambda:
Functor[λ[α => F[G[α]]]]
没有插件它看起来像:
Functor[({type λ[x] = G[F[x]]})#λ]