Variance and Generalized Constraints for C# Generics
Variance and Generalized Constraints for C# Generics
复制标题
C 的方差和广义约束
DOI:
--
复制
发表时间:
2006
期刊:
影响因子:
--
通讯作者:
Dachuan Yu
中科院分区:
文献类型:
--
作者:
B. Emir;A. Kennedy;Claudio V. Russo;Dachuan Yu
Generic types in C$^{sharp}$ behave invariantly with respect to subtyping. We propose a system of type-safe variance for C$^{sharp}$ that supports the declaration of covariant and contravariant type parameters on generic types. To support more widespread application of variance we also generalize the existing constraint mechanism with arbitrary subtype assertions on classes and methods. This extension is useful even in the absence of variance, and subsumes equational constraints proposed for Generalized Algebraic Data Types (GADTs). We formalize the subtype relation in both declarative and syntax-directed style, and describe and prove the correctness of algorithms for constraint closure and subtyping. Finally, we formalize and prove a type safety theorem for a featherweight language with variant classes and generalized constraints.