This commit is contained in:
crumbtoo
2023-11-23 00:56:47 -07:00
parent ac6c0b7457
commit d84fe56fbb
5 changed files with 33 additions and 24 deletions

View File

@@ -47,13 +47,13 @@ instance Traversable Heap where
alloc :: Heap a -> a -> (Heap a, Addr)
alloc (Heap (u:us) m) v = (Heap us (M.insert u v m), u)
alloc (Heap [] _) _ = error "STG heap model ran out of memory..."
alloc (Heap [] _) _ = error "STG heap model ran out of memory..."
update :: Heap a -> Addr -> a -> Heap a
update (Heap u m) k v = Heap u (M.adjust (const v) k m)
update :: Addr -> a -> Heap a -> Heap a
update k v (Heap u m) = Heap u (M.adjust (const v) k m)
free :: Heap a -> Addr -> Heap a
free (Heap u m) k = Heap (k:u) (M.delete k m)
free :: Addr -> Heap a -> Heap a
free k (Heap u m) = Heap (k:u) (M.delete k m)
hLookup :: Addr -> Heap a -> Maybe a
hLookup k (Heap _ m) = m !? k