lookup 関数は Maybe モナドを返す

lookup 関数は Maybe モナドを返す


Prelude> :t lookup
lookup :: (Eq a) => a -> [(a, b)] -> Maybe b

Prelude> let taro = ("taro",[("sex","male"),("address","chiba")])
Prelude> let jiro = ("jiro",[("sex","male"),("address","tokyo")])
Prelude> let person = [taro,jiro]
Prelude> person
[("taro",[("sex","male"),("address","chiba")]),("jiro",[("sex","male"),("address","tokyo")])]

Just 型の値 または Nothing を返す。


Prelude> lookup "taro" person
Just [("sex","male"),("address","chiba")]
Prelude> lookup "saburo" person
Nothing

>>= で連結できる。


Prelude> lookup "taro" person >>= lookup "address"
Just "chiba"
Prelude> lookup "jiro" person >>= lookup "address"
Just "tokyo"
Prelude> lookup "saburo" person >>= lookup "address"
Nothing
Prelude> lookup "jiro" person >>= lookup "age"
Nothing

Prelude> return (lookup "jiro" person) >>= print
Just [("sex","male"),("address","tokyo")]
Prelude> return (lookup "saburo" person) >>= print
Nothing