bf-repl/src/Memory.hs

25 lines
620 B
Haskell

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