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