値コンストラクタ
0個以上の引数を取って新たな値を作るもの
データ型定義の、実際に型が取りうる値の種類を指定する
右辺だけの話
data Bool = False | True
の =
の右側の部分のこと
data Shape = Circle Float Float Float
の Circle
上の定義だと :t Circle
とすると、 Circle :: Float -> Float -> Float -> Shape
が得られる
つまり、値コンストラクタは関数と見ることができる
Just a
のように引数を取るものもあれば True
などのように取らないものもある
Just
などのように引数を取るものは、データ型の値を返す関数となる
Haskelldata Shape = Circle Float Float Float
-- > :t Rectangle
-- Rectangle :: Float -> Float -> Float -> Float -> Shape
フィールドに名前をつけたければレコード構文を使えばいい
hsdata Person = Person { Name :: String, age :: Int }