我一直想把我的头围绕着阿达,我一直在阅读阿格达和伊德里斯的dependent types。
难道有人认为Ada中的subtypes等同于依赖类型吗?
答案 0 :(得分:2)
在计算机科学和逻辑中,依赖类型是一种类型,其定义取决于值。 A"一对整数"是一种类型。 A"一对整数,其中第二个大于第一个"是依赖类型,因为它依赖于值。
那么你可以使用子类型来实现它们 -
-- The "pair of integers" from the example.
Type Pair is record
A, B : Integer;
end record;
-- The "where the second is greater than the first" constraint.
Subtype Constrained_Pair is Pair
with Dynamic_Predicate => Constrained_Pair.B > Constrained_Pair.A;
答案 1 :(得分:1)
不,不是因为我阅读了您引用的依赖类型的正式定义。
答案 2 :(得分:1)
考虑以下示例:
type A_T is range 1 .. 50;
subtype B_T is A_T;
Sub_type B_T
实际上是"相同"作为类型A_T
,因为它不对它构成任何限制。例如,为方便起见,它更像是A_T
类型的重命名。因此,您不能说Ada子类型是依赖类型。