Idris/Haskell では、型に注釈を付け、Vect などの GADT コンストラクターを使用することでデータのプロパティを証明できますが、これにはプロパティを型にハードコーディングする必要があります (たとえば、Vect は List とは別の型でなければなりません)。たとえば、コンストラクターをオーバーロードしたり、効果の流れで何かを使用したりすることにより、プロパティのオープンセット (長さと移動平均の両方を保持するリストなど) を持つ型を持つことは可能ですか?
Idris/Haskell では、型に注釈を付け、Vect などの GADT コンストラクターを使用することでデータのプロパティを証明できますが、これにはプロパティを型にハードコーディングする必要があります (たとえば、Vect は List とは別の型でなければなりません)。たとえば、コンストラクターをオーバーロードしたり、効果の流れで何かを使用したりすることにより、プロパティのオープンセット (長さと移動平均の両方を保持するリストなど) を持つ型を持つことは可能ですか?