haskell-phrasebook icon indicating copy to clipboard operation
haskell-phrasebook copied to clipboard

Maps and sets

Open chris-martin opened this issue 6 years ago • 1 comments

As a jumping-off point for an example involving the Map type from containers here is a fairly direct translation from Go By Example:

import qualified Data.Map as Map

main =
  do
    let m = Map.fromList [("k1", 7), ("k2", 13)]
    putStrLn ("map: " ++ show m)
    putStrLn ("v1: " ++ show (Map.lookup "k1" m))
    putStrLn ("size: " ++ show (Map.size m))

    let m' = Map.delete "k2" m
    putStrLn ("map: " ++ show m')
    putStrLn ("v2: " ++ show (Map.lookup "k2" m'))
$ runhaskell maps.hs
map: fromList [("k1",7),("k2",13)]
v1: Just 7
size: 2
map: fromList [("k1",7)]
v2: Nothing

Since Set is closely related to Map, it might be nice to discuss sets at the same time.

We might also want to show using a custom datatype as the key in a map, to demonstrate how you need to derive Eq and Ord.

chris-martin avatar Sep 30 '19 21:09 chris-martin

I'd be happy to write an example sometime this week

beyond demonstrating what happens if you try to use a type without Eq or Ord, - do you have any other goals for this section?

should we discuss time-space complexity? compare Map with, say IntMap? what knowledge would you like someone to take away from this section?

Benjmhart avatar Oct 01 '19 00:10 Benjmhart