代数的データ型の章はまだまだ続きます。今回はフィールドの更新について。更新と言っても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型のデータを作成しています。