26、多态变量的表示与处理

多态变量的表示与处理

在编程中,多态类型的处理是一个复杂且关键的问题。下面将深入探讨多态变量的表示、相关问题及解决方法。

多态函数与类型系统

先来看一个多态函数 mult 的示例:

function mult(m: poly<a>((a->a)->(a->a)),
n: poly<b>((b->b)->(b->b)))
: poly<c>(c->c)->(c->c) =
let function g<d>(f: d->d) : d->d =
m<d->d>(n<d>(f))
in g
end

这个函数的形式参数 m n 是显式多态的。但在某些类型推导算法中,仅在函数声明时引入 poly 类型,而不会在形式参数中引入。

对于类似 Poly - Tiger 的类型系统,不存在 Hindley - Milner 风格的类型推导算法。如果要充分利用二阶 lambda 演算的强大功能,就需要完整地写出类型。目前还不清楚 Poly - Tiger 额外的表达能力是否必要,以及它是否能超过隐式类型语言中类型推导带来的便利性。像 ML 和 Haskell 这类使用隐式多态类型的语言,在研究社区中作为通用函数式编程语言取得了很大成功,而显式类型的多态语言尚未达到相同的普及程度。不过,显式类型语言正逐渐成为多态语言中间表示的主流。

多态变量的问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值