From ea9d6a679d0c9f36b9f8b02e829901a2a8c06a98 Mon Sep 17 00:00:00 2001 From: Paul3103 <plw1g21@soton.ac.uk> Date: Thu, 20 Apr 2023 11:41:03 +0100 Subject: [PATCH] Changed how the hashmap is being implemented. --- JHashtable.hs | 17 +++++++++-------- Julio.hs | 1 + 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/JHashtable.hs b/JHashtable.hs index 1986131..a97352e 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 58b46a0..821ff63 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 () -- GitLab