gpt4 book ai didi

scala - 泛型中奇怪的嵌套结构类型

转载 作者:行者123 更新时间:2023-12-01 10:08:14 25 4
gpt4 key购买 nike

有人可以解释嵌套在泛型中的结构类型的奇怪构造吗:

implicit def Function1Functor[R]: Functor[({type λ[α]=(R) => α})#λ] = 
new Functor[({type λ[α]=(R) => α})#λ] ....

此示例来自 Scalaz 库: Functor.scala

为什么那里需要这种建筑?写起来不会更简单:
 implicit def Function1Functor[R,A]: Functor[R =>A]

或者
 implicit def Function1Functor[R,A]: Functor[Function1[R,A]]

最佳答案

Functor的签名类型构造函数表明它是用另一个一元类型构造函数参数化的 F :

trait Functor[F[_]] extends InvariantFunctor[F]

都没有 R => A也不是 Function1[R,A]是类型构造函数;他们不接受任何参数。

然而在:
type λ[α] = (R) => α
λ是一个带一个参数的类型构造函数, α . ( R 已在此上下文中定义。)

语法 ({type λ[α]=(R) => α})#λ被称为类型 lambda。这是一种语法技巧,允许内联创建类型别名并通过投影引用,因此可以在需要类型的地方使用整个表达式。

关于scala - 泛型中奇怪的嵌套结构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8243680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com