次の 2 つの例のように型を制約できる型付きプログラミング言語はありますか?
確率は、最小値が 0.0、最大値が 1.0 の浮動小数点数です。
type Probability subtype of float where max_value = 0.0 min_value = 1.0
離散確率分布は、キーがすべて同じタイプで、値がすべて確率であり、値の合計が 1.0 になるマップです。
type DPD<K> subtype of map<K, Probability> where sum(values) = 1.0
私の理解する限り、これは Haskell や Agda では不可能です。