scala – 泛型中奇怪的嵌套结构类型
发布时间:2020-12-16 09:05:38 所属栏目:安全 来源:网络整理
导读:有人可以解释嵌套在泛型中的结构类型的奇怪结构: implicit def Function1Functor[R]: Functor[({type λ[α]=(R) = α})#λ] = new Functor[({type λ[α]=(R) = α})#λ] .... 此示例来自Scalaz库:Functor.scala 为什么需要这种结构呢?写起来并不简单:
有人可以解释嵌套在泛型中的结构类型的奇怪结构:
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.这是一种语法技巧,允许类型别名内联创建并通过投影引用,因此整个表达式可用于需要类型的地方. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- IIS 学习笔记(在IIS上发布了一个webservice,访问
- angular factory 服务封装获取数据的服务
- 第十二章 Shell脚本编写及常见面试题(三)
- Passport AngularJS ExpressJS:Access-Control-
- scala“yield”不会产生正确的类型
- ssh secure shell支持中文不乱码
- Building a Mashup of National Parks using the
- “”1美元,为什么bash表现得像这样?
- angularjs – 客户端使用Cookie的REST API身份验
- php – Docker apache2不会考虑新的000-defaul
热点阅读