非组合类型

作者: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)空[],其余就不像普通类型了.这就特殊了,难办了.

posted @   zjh6  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示