轻量级 Java 的函数式类型分配
1. 名义类型系统概述
在名义类型系统中,类的类型检查仅进行一次,其字段和方法声明的类型是静态、唯一的,并在调用时使用。同时,我们在工作中不考虑类型转换操作。使用类型转换类似于程序员承诺被转换的表达式在运行时会计算为具有指定类(或其子类)的对象,因此为保证类型安全,需要在运行时进行形状检查。例如:
(C) new D(...) → new D(...)
(D <: C)
检查完成后,类型转换操作将消失。虽然类型转换对于编程便利性和实现重载方法的正确行为至关重要,但我们暂不考虑它。
2. 语义类型分配
2.1 语义类型定义
语义类型系统基于 λ - 演算的严格交集类型分配系统,并受 ς - 演算的谓词系统影响。我们定义的类型可以描述表达式(或表达式求值后的对象)的能力,包括可对其执行的操作(如访问字段或调用方法)以及这些操作的结果,同时使用类型变量跟踪方法输入和输出之间的依赖关系。
语义类型和严格类型的定义如下:
φ, ψ ::= ω | σ | φ ∩ ψ
σ ::= ϕ | C | ⟨f:σ⟩ | ⟨m:(φ1, ..., φn)→σ⟩ (n ≥ 0)
其中, ϕ 是类型变量, C 是类名, ω 是通用类型常量,也是类型层次结构的顶层元素。
轻量级Java函数式类型分配
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



