制約可能な型を持つ言語はありますか? 質問する

制約可能な型を持つ言語はありますか? 質問する

次の 2 つの例のように型を制約できる型付きプログラミング言語はありますか?

  1. 確率は、最小値が 0.0、最大値が 1.0 の浮動小数点数です。

    type Probability subtype of float
    where
        max_value = 0.0
        min_value = 1.0
    
  2. 離散確率分布は、キーがすべて同じタイプで、値がすべて確率であり、値の合計が 1.0 になるマップです。

    type DPD<K> subtype of map<K, Probability>
    where
        sum(values) = 1.0
    

私の理解する限り、これは Haskell や Agda では不可能です。

ベストアンサー1

あなたが望むものは精製タイプ

ProbabilityAgda では次のように定義できます:問題

合計条件付きの確率質量関数型は、264 行目に定義されています。

Agdaよりも直接的な改良型を持つ言語もあります。例えば、ATSM

おすすめ記事