module Base where import qualified Data.HashMap as HM data BFAction = MoveRight | MoveLeft | Increment | Decrement | Replace | Print | JumpRight | JumpLeft type Address = Int type CodePosition = Int type Memory = HM.Map Address Int type JumpTable = HM.Map CodePosition CodePosition data State = State { memory :: Memory , pointer :: Int , codePos :: Int , jumpTable :: JumpTable } deriving (Show, Read, Eq) initState :: State initState = State { memory = HM.empty , pointer = 0 , codePos = 0 , jumpTable = HM.empty }