2017-06-11 14 views
4

私はAdaの周りを頭で囲んでいましたが、私はAgdaとIdrisで少しだけdependent typesを読んできました。Adaサブタイプは依存型と同等であると主張できますか?

Adaのsubtypesは従属型と同等であると主張できますか?

+0

参照を実装するためにサブタイプを使用することができます[*§3.2型およびサブタイプ:ノート*](http://www.ada-auth.org/standards/ 12rm/html/RM-3-2.html#p10)を参照してください。 – trashgod

+1

あなたの引用の最初の文にあるように、 '従属型は値に依存する型です'ではありません。基本型は値ではありません。 – EJP

答えて

1

いいえ、あなたが参照した従属型の正式な定義を読んでいません。

1

次の例を考えてみましょう:それはそれに制限を課すものではないので、

type A_T is range 1 .. 50; 
subtype B_T is A_T; 

Sub_type B_Tは、実際にはタイプA_Tとして、「同じ」です。たとえば、便宜上、タイプA_Tの名前の変更です。したがって、Adaサブタイプは従属型であるとは言えません。

2

コンピュータサイエンスとロジックでは、従属型はその値が値に依存する型です。 「整数の対」はタイプです。 「第2の値が第1より大きい整数の対」は、値に依存するため依存型です。

それでは、あなたはthem--

-- 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; 
+0

しかし、あなたはその述語を 'Pair'に直接置くことができました。 –

+0

@JacobSparreAndersen - 引用符で囲まれた部分を実装しました:* "整数の組"は型です*と* "第2が第1より大きい整数の組"は値に依存するため依存型です。* – Shark8

+0

@JacobSparreAndersen - (LRMによると、 'type'キーワードも" * first subtype indication * "です) – Shark8

関連する問題