template instantiation

This commit is contained in:
crumbtoo
2023-11-09 13:31:16 -07:00
parent e94f8a0ee7
commit 4c8eba0b41
5 changed files with 123 additions and 23 deletions

View File

@@ -1,11 +1,12 @@
module Data.Heap
( Heap
, Addr
, alloc
, update
, free
, hlookup
, hLookup
, addresses
, hsize
, hSize
)
where
----------------------------------------------------------------------------------
@@ -15,6 +16,7 @@ import Data.List (intersect)
----------------------------------------------------------------------------------
data Heap a = Heap [Addr] (Map Addr a)
deriving Show
type Addr = Int
@@ -50,12 +52,12 @@ update (Heap u m) k v = 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)
hlookup :: Heap a -> Addr -> Maybe a
hlookup (Heap _ m) k = m !? k
hLookup :: Addr -> Heap a -> Maybe a
hLookup k (Heap _ m) = m !? k
addresses :: Heap a -> [Addr]
addresses (Heap _ m) = M.keys m
hsize :: Heap a -> Int
hsize (Heap _ m) = M.size m
hSize :: Heap a -> Int
hSize (Heap _ m) = M.size m