难道有人认为Ada亚型相当于依赖型吗?

时间:2017-06-11 17:54:23

标签: types ada dependent-type type-theory

我一直想把我的头围绕着阿达,我一直在阅读阿格达和伊德里斯的dependent types

难道有人认为Ada中的subtypes等同于依赖类型吗?

3 个答案:

答案 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子类型是依赖类型。