非组合类型
作者:Timon Gehr:
原文地址
程序中的类型,有些是生成的.如,你有T,S
,则T[],S[],T闭包(S)
也是类型
,
组合
的意思是:组成
类型不隐式
依赖其环境
,同时,环境
类型,也不依赖组成
类型.
如上示例:T[]
和T闭包(S)
不是完全组合,因为当T
为空
时,存在特例
.
这种特例
,导致语言的各种折腾
.如如果式
为空
,编译器
把中 式
当作式;中;
.这就是折腾
,如果空
不是特例,则不必这样.而许多语言
,则将空
当作空元组
来处理.
本dip
就有这种折腾
,甚至不打算解决如下:
int apply(int delegate(int delegate(int)) f, int delegate(int) g){
return f(g);
}
如果,有属性多态
,你可以这样:
int apply[qual a,qual b](int delegate(int delegate(int)a)b f, int delegate(int)a g)b{
return f(g);
}
该方案,简单,通用
,且不按非组合
方式重定义
已有类型,而不必去折腾
.也不必打断
已有代码,也不会阻碍
添加新特性.
空
只能用于像空 闭包(S)
或空[]
,其余就不像普通类型了.这就特殊
了,难办了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现