Haskellで要素の内部データの合計値が常に一定になる制約をかけたデータ型の作成方法

実現したいこと

数値の合計が10にならないとエラーが出るようなリストを作りたい

厳密にはこのようなリストが必要なわけではないのですが、これの作り方が理解できれば、自分の目的の型を実装できると思っているため、単純化しています。

例えば、
a = FixedSizedList [3, 3, 3, 1]
これはエラーにならない

b = FixedSizedList [3, 3, 3]
これはエラーになり、定義できない

リストの要素の合計は常に10になって欲しいです。
また、10以外の数値に設定できるような拡張性は不要です。

このようなデータ型の実装方法を知っている方がいらっしゃれば、教えていただきたいです。

コメントを投稿

0 コメント