構造体の要素に適用される特定の制約/規則があり、これを型に反映できるように、Haskellでどのようにデータ構造体を定義することが可能でしょうか。例えばHaskellでデータ構造体/型を定義する
私は別のタイプのリストで構成されたタイプを持っている場合、
R = [Xを言います| x < - 入力、ルール1、ルール2、ルール3]。
この場合、rの型は(type of x)の要素のリストです。しかし、これを言って、私たちはルールを失う。だから、この余分な情報を型定義にどのように保持することが可能でしょうか。
私の質問にもっと具体的に言えば、スドコの場合を取る。スドコのグリッドは行のリストであり、順番にセルのリストです。しかし、我々が知っているように、値には制約があります。しかし、タイプを表現するとき、これらの制約はグリッドと行のタイプの定義に現れません。
これは可能ですか?
ありがとうございました。
場合によっては、GADTが役立ちます。従属型はすべてを行うことができますが、Haskellではサポートされていません(プログラマからの些細な努力も必要です)。 – chi
"些細ではない努力が必要" - 正しいプログラムを得るために必要な労力は一定です。選択肢は、宣言するタイプ、書いた実装、頭の中だけで、その努力が現れる場所です。もちろん、最後の変種は最も再利用できません。 – d8d0d65b3f7cf42