module Memory where import Base (Memory) import qualified Data.HashMap as HM getMemAdr :: Memory -> Int -> Int getMemAdr memory adr = HM.findWithDefault 0 adr memory setMemAdr :: Memory -> Int -> Int -> Memory setMemAdr memory adr val = HM.insert adr val memory increment :: Memory -> Int -> Memory increment memory adr = HM.alter f adr memory where f :: Maybe Int -> Maybe Int f Nothing = Just 1 f (Just i) = Just $ i + 1 decrement :: Memory -> Int -> Memory decrement memory adr = HM.alter f adr memory where f :: Maybe Int -> Maybe Int f Nothing = Just $ -1 f (Just i) = Just $ i - 1