diff --git a/JHashtable.hs b/JHashtable.hs index 1986131e00d0967c4a485115a01c197ccd00931f..a97352e5906073c0a0d7ce3b90c6676f39355b5e 100644 --- a/JHashtable.hs +++ b/JHashtable.hs @@ -1,12 +1,13 @@ -import Data.HashTable.IO +import qualified Data.Map as Map +import Data.IORef -newMap :: IO (BasicHashTable String a) -newMap = new :: IO (BasicHashTable String a) +type MutableMap a = IORef (Map.Map String a) +newMap :: IO (MutableMap a) +newMap = newIORef Map.empty -insertMap :: BasicHashTable String a -> String -> a -> IO () -insertMap = insert +insertMap :: MutableMap a -> String -> a -> IO () +insertMap ref key value = modifyIORef' ref (Map.insert key value) --- Look up a value in the hash map by key -lookupMap :: BasicHashTable String a -> String -> IO (Maybe a) -lookupMap = Data.HashTable.IO.lookup +lookupMap :: MutableMap a -> String -> IO (Maybe a) +lookupMap ref key = Map.lookup key <$> readIORef ref diff --git a/Julio.hs b/Julio.hs index 58b46a069d60f125b1e5173d4c14dc610b6dca45..821ff6395ca745c129ea122c2d4851ced30aa6e7 100644 --- a/Julio.hs +++ b/Julio.hs @@ -3,6 +3,7 @@ import Grammar import System.Environment import Control.Exception import System.IO +import JHashtable main :: IO ()