三足鼎立 hdu_在三足大象上
三足鼎立 hdu
我经常争辩说,语言,库或框架的良好设计并不是要在解决方案中尽可能多地包含功能,而是要发现一小部分相互关联的功能,以相互促进。 也就是说,我们希望最大化解决方案的功能/表达能力,同时最小化表面积。 此外,我经常愿意为了优雅而牺牲一些灵活性 。 我认为,优雅的解决方案更易于学习,更令人愉悦且易于抽象。
考虑到这一点,我想考虑一下语言设计师至少已经研究了二十年的问题:如何将子类型多态与参数多态 (泛型)结合起来。 这是任何带有静态类型的面向对象语言都面临的核心问题。 最近的语言已经逐渐接近令人满意的解决方案,但是我想提出,如果听起来不太自私,则锡兰提供了迄今为止最令人满意的解决方案。
我们的吉祥物是Trompon大象,因为大象有四只脚,如果一只脚失踪了,它会掉下来。 锡兰的字体系统就是这样! (是的,这是一个平衡面。)
类型系统的四个分支是:
- 申报地点差异
- 临时联合和交叉点类型
- 基于主体类型的类型推断
- 协变细化和主体实例继承
如果我们要去除这四个特征中的任何一个,突然的东西,Just Works根本就不再起作用了,或者即使我们能够使它起作用,结果也会变得更加复杂,并涉及推理程序员难以复制。
考虑下面这行非常简单的代码:
value animals = ArrayList { Cat(), Dog(), Person() };
推断的animals
类型为ArrayList<Cat|Dog|Person>
。
- 如果我们要删除声明位置的协方差,则不能将
animals
分配给List<Animal>
。 - 如果要删除联合和交集类型,则推断类型实参的过程将是模棱两可的,并且会更加复杂。 (在语言规范的两页伪代码中定义了锡兰的类型自变量推断算法,这听起来很像,直到您意识到该算法在其他语言中是有问题和未充分说明的,并且该算法的实际实现并不多更长)。
- 如果要取消类型推断或主体类型,则需要在此代码行中明确写下一些不感兴趣的类型。
除去这些特征中的任何一个,我们剩下的是三足大象 。
主体实例化继承是Ceylon的一种隐藏功能,尽管我们在容器类型的整个设计过程中都广泛使用它,但我们并没有太多讨论。 例如,它可以说List<Element>
是Ranged<List<Element>>
, Sequence<Element>
是List<Element>&Ranged<Sequence<Element>>
。 主体实例化继承与声明站点协方差以及临时联合/交叉点类型的结合非常好。 考虑以下代码:
List<String>|Integer[] ranged = ... ;
value span = ranged.span(0,max);
在此, span
的推断类型为List<String>|Integer[]
。 那不是很好吗? 所述typechecker已推断的主超类型实例化 Ranged
对List<String>|Integer[]
是类型Ranged<List<String>|Integer[]>
并且从而确定用于完美返回类型span()
如果我们要删除声明站点协方差,主体实例继承或联合类型中的任何一种,那么这种推理将不再成立。 大象会掉在他的屁股上。
翻译自: https://www.javacodegeeks.com/2013/12/on-three-legged-elephants.html
三足鼎立 hdu
三足鼎立 hdu_在三足大象上相关推荐
- 你想三年后过上什么样的生活?
这文是转的,但写得挺好,个人奋斗的故事总是很有趣,这位还是一位女程序员,也是转行学习编程,挺好的,编程能让人立起腰杆子! 我在北京这几年(一) 2015年 4月6号我买了张硬座来北京面试实习,面试时提 ...
- 无论是cisco还是华三的书上对于子网划分有个问题需要解释
无论是cisco还是华三的书上对于子网划分有个问题,例如:如果子网为有五位 ,则可以划分为30个子网.在实际中却不是这样的 子网位五位,可以划分为32个子网.那为什么这么写,难道是出书的人写错了,其实 ...
- 关于云计算存储虚拟化技术三个层次上的实现
关于云计算存储虚拟化技术三个层次上的实现 随着企业的成长,业务和应用不断增加,IT 系统规模日益庞大,带来高能耗.数据中心空间紧张.IT 系统总体拥有成本过高等问题;而现有服务器.存储系统等设备又没有 ...
- 推荐三款 Mac 上的理财神器 iCompta、Rublik、UctoX
推荐三款 Mac 上的理财神器 iCompta.Rublik.UctoX 今天推荐三款理财神器,像个人的话可以使用 iCompta(个人财务管理)一款软件就好了,但有些朋友可能有关注汇率的需求,可以使 ...
- Java服务器部署基于OpenCV的C++图像处理项目(三)图片上传并返回处理图
Java服务器部署基于OpenCV的C++图像处理项目(三)图片上传并返回处理图 1.上传图片并返回灰度图功能 由于使用的springboot开发,直接写一个upload接口供图片上传,以下是spri ...
- 苏教版三年计算机教案,2021苏教版三年级信息技术上学期教学计划
信息技术是一门讲究操作性和实践性的课程,所以应注重培养孩子的动手操作实践能力,达到手脑并用,同步发展.三年级信息技术教师制定好计划,才能助教学各项工作的顺利有序地开展.下面是学习啦小编带来关于2021 ...
- 有3箱水果,一箱是苹果,一箱是橘子,一箱是两种水果的混装,三个箱子上都贴了标签,但所有的标签都贴错了 现在你只拿出一个水果来判断3个箱字里的情况
文章目录 前言 一.题目条件:很明显就是三个箱子并且三个标签都是错误的!!! 二.在贴着苹果+橘子的箱子里拿出一个水果(注意该箱子标签错误),所以假设拿出来苹果,该箱子就是苹果.而标记者橘子的箱子既不 ...
- (面试智力题)有3箱水果,一箱是苹果,一箱是橘子,一箱是两种水果的混装,三个箱子上都贴了标签,但所有的标签都贴错了 现在你只拿出一个水果来判断3个箱字里的情况
问题重述: 有3箱水果,一箱是苹果,一箱是橘子,一箱是两种水果的混装,三个箱子上都贴了标签,但所有的标签都贴错了 现在你只拿出一个水果来判断3个箱字里的情况 思路: 假设,正确的箱子标签为: A:苹果 ...
- 海奥华预言--第三章 地球上的第一个人
当我们在Haatis,就是以前描述过的那个休息室里重新坐好之后,涛就开始了她那奇怪的故事. "米歇,准确地讲,是在一百三十五万年以前,在人马座星座(Centaur)中一个叫巴卡拉梯尼(Bak ...
最新文章
- Spring4-JdbcDaoSupport-查询单列
- Android 屏幕自动旋转-Sensor属性
- SAP 货物移动 BAPI 的简单使用 BAPI_GOODSMVT_CREATE
- android apr分析,APR分析信号篇
- 2003文件服务器迁移2016,服务器2016设置文件共享
- Excel有哪些需要熟练掌握而很多人不会的技能!
- Java虚拟机专题之垃圾回收(读书笔记)
- 2017-9-5-Java 泛型
- webform 组合查询
- 沟通的重要工具——乔哈里视窗
- 计算机输入什么指令关机,电脑自动关机命令是什么【详细介绍】
- wps怎么把ppt里的字体一起保存_WPS怎样将PPT中的文字导出为Word文档?
- 2019亚马逊差评回复模板,老手惯用的亚马逊差评应对技巧
- command/cmd命令大全
- web前端入门到实战:简单的图片轮播
- mysql 错误码1236_【MySql】MySQL Replication Fatal Error 1236
- python+百度AI 文字转换成语音
- 对接第三方顺丰丰桥下单Api接口实战教程java
- 数据可视化BI平台选型调研报告 Superset VS Redash VS Metabase
- 那些看来很朴实,却很有趣,很有爱的签名
热门文章
- 计算机主机拆解报告,计算机主机拆装实训的报告.docx
- idea导入项目全部爆红问题怎么解决
- Java运算符优先级及结合性
- pageable设置size_spring – 设置JPA Pageable Object的默认页面大小
- 计算机进不去管理,192.168.3.1登陆页面,192.168.3.1管理页面进不去怎么办? | 192路由网...
- 公办大学计算机系的女生少吗,高考:女生失业率“最低”的大学专业,考上家长很开心...
- bxslider 使用帮助
- 微信推出微信小商店卖货小程序
- 搜狗输入法看见好看好看好看就开机后就看见8932
- 征途2经典版服务器双线哪个稳定,双线操控战不停 《征途2经典版》战灵分身登场...