Scalaz Functor类型类特殊符号

问题描述 投票:2回答:1

最近我遇到了这个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”中类型表达式的含义/目的是什么,即λ[α=> F [G [α]]]? Sofar,我看过只有类型别名,例如在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由Intellij之外的sbt构建,然后导入Intellij。知道可能是什么情况吗?

scala intellij-idea scalaz scalaz7 kind-projector
1个回答
4
投票

此语法由kind-projector Scala插件启用。它允许以更简洁的方式编写类型lambda:

Functor[λ[α => F[G[α]]]]

没有插件,它看起来像:

Functor[({type λ[x] = G[F[x]]})#λ]
© www.soinside.com 2019 - 2024. All rights reserved.