我一直在尝试使用 Hindley-Milner 算法构建一个类型系统,并遇到了以下挑战,我很好奇是否有任何资源或论文可以查看。
假设我有一种编程语言,它具有某种形式的属性访问器(类似javascript),它适用于数组和对象,数组括号内的属性需要是数字,对象括号内的属性需要成为一个字符串。
例如
const arr = [0, 1, 2]
arr[0]
const obj = { hello: "World" }
obj["hello"]
假设我们想在下面的代码片段上使用hindley-milner
A[B]
然后如果后来我们意识到这B
是一个数字,那么我们立即推断 A 是一个数组。类似地,如果我们推断 A 是一个对象,那么 B 立即是一个数字。
是否有任何论文或类型系统具有这种条件替换概念?