generated at
仕様を満たした型
を設計する

仕様を型で表現する
「ある値が、この型に属している場合は、仕様を満たしている」ということを表現できるような型を設計する
その言語の型システムの能力にも大きく依存する


ref
仕様
key/value のペアのリストを扱いたい
key に重複がないことを満たしたい
安直にやると、
[(key, value)] のようなデータ構造になる
しかし、これだけ見ると、リスト内で key に重複がないことは判別できない
重複がないことを確証するためには別途validationが必要になる
仕様を満たしたデータ構造を使う
Map key value を使えばいい
Map key に重複がないことを保証している
型を見れば、 key に重複がない、ということを理解できる




データ構造で表現するのが難しい場合はnewtypeを定義すればいい
smart constructorとセットで使う
例えば、数値の 1 ~ 5 のみ許容する型とか


関連

参考