Skip to content

Instantly share code, notes, and snippets.

@shigemk2
Created February 18, 2015 12:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shigemk2/0a023388e691cf575d61 to your computer and use it in GitHub Desktop.
Save shigemk2/0a023388e691cf575d61 to your computer and use it in GitHub Desktop.
import Data.Char
import qualified Data.Map as Map
phoneBook =
[("betty", "555-2938")
,("betty", "342-2492")
,("bonnie", "452-2928")
,("patsy", "493-2928")
,("patsy", "943-2929")
,("patsy", "827-9162")
,("lucille", "205-2928")
,("wendy", "939-8282")
,("penny", "853-2492")
,("penny", "555-2111")
]
phoneBookToMap :: (Ord k) => [(k, String)] -> Map.Map k String
phoneBookToMap xs = Map.fromListWith add xs
where add number1 number2 = number1 ++ ", " ++ number2
phoneBookToMap' :: (Ord k) => [(k, a)] -> Map.Map k [a]
phoneBookToMap' xs = Map.fromListWith (++) $ map (\(k, v) -> (k, [v])) xs
main = do
print $ Map.lookup "patsy" $ phoneBookToMap phoneBook
print $ Map.lookup "wendy" $ phoneBookToMap phoneBook
print $ Map.lookup "patsy" $ phoneBookToMap' phoneBook
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment