packages feed

hid-examples-0.2: maybe.hs

import Safe

type Name = String
type Phone = String
type Location = String
type PhoneNumbers = [(Name, Phone)]
type Locations = [(Phone, Location)]

locByName :: PhoneNumbers -> Locations -> Name -> Maybe Location
locByName pnumbers locs name = lookup name pnumbers >>= flip lookup locs

locByName' :: PhoneNumbers -> Locations -> Name -> Maybe Location
locByName' pnumbers locs name = case lookup name pnumbers of
                                   Just number -> lookup number locs
                                   Nothing -> Nothing

doubleStrNumber :: (Num a, Read a) => String -> Maybe a
doubleStrNumber s = (*2) <$> readMay s


plusStrNumbers :: (Num a, Read a) => String -> String -> Maybe a
plusStrNumbers s1 s2 = (+) <$> readMay s1 <*> readMay s2

main = do
  print $ doubleStrNumber "21"
  print $ plusStrNumbers "10" "xx"