代数的データ型その6

代数的データ型の章はまだまだ続きます。今回はフィールドの更新について。更新と言ってもHaskellでは再代入はできないので、既存の値を元に新しい値を作るのですが、その際に一部のフィールドだけを変更して値を作ることができます。

サンプルプログラムを作ってみました。

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

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

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

getAnchor2 :: Anchor -> Anchor
getAnchor2 a = (a {aLabel = "Example2"})

getAnchor2でaLabelだけを更新したAnchor型のデータを作成しています。