>>301
普通はデータ構築子をmodule外に非公開にすることで
内部構造を隠匿する

よくあるOOP言語ではclassが抽象データ型の単位だけど
Haskellだとmoduleになる