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