代数的データ型その7

多相的な型の宣言というのが出てきましたが、ここではパス。

型コンストラクタとデータコンストラクタは同じ名前を使うことができるそうです。

data Anchor = A { aUrl   :: String,
                  aLabel :: String }

これまでは上記のように書いていましたが、こんな風に書けます。

data Anchor = Anchor { aUrl   :: String,
                       aLabel :: String }

この方が分かりやすいかどうかはちょっと分かりませんが、名前で悩む機会は減りそうですね。

データコンストラクタの名前を型コンストラクタの名前に合わせて書いてみました。

data Anchor = Anchor {
  aUrl   :: String,
  aLabel :: String }

main = do putStrLn $ "Url  : " ++ aUrl getAnchor
          putStrLn $ "Label: " ++ aLabel getAnchor

getAnchor :: Anchor
getAnchor = Anchor "http://www.example.com" "Example"