代数的データ型その2

data Anchor = A String String

このように宣言した型のフィールドにアクセスするにはパターンマッチを利用します。早速サンプルを作って試してみます。

data Anchor = A String String

main = do putStrLn $ "Url  : " ++ getUrl getAnchor
          putStrLn $ "Label: " ++ getLabel getAnchor

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

getUrl :: Anchor -> String
getUrl (A url _) = url

getLabel :: Anchor -> String
getLabel (A _ label) = label

思った通りに動きました。「++」はリストの連結、「_」はワイルドカードですね。実は覚えていなかったのでこんなのあったなあと思いながら本を読み返して見つけました。

getなんちゃらという関数名はHaskellらしくないのかも知れませんけど、無理矢理作ったプログラムで良い名前が浮かばなかったのでこのままで。