repos / gcs.git


gcs.git / src
Evgenii Akentev  ·  2024-09-14

Mutator.hs

 1{-# language MultiParamTypeClasses #-}
 2
 3module Mutator where
 4
 5data Value = IntVal Int | PtrVal ObjectPtr
 6  deriving (Eq, Show)
 7
 8data ObjectPtr = ObjectPtr Int | NullPtr
 9  deriving (Eq, Show)
10
11class Monad m => Mutator m where
12  new :: Value -> m ObjectPtr
13
14  readFromRoots :: Int -> m ObjectPtr
15  readFromObject :: ObjectPtr -> m Value
16  readFromField :: Int -> ObjectPtr -> m ObjectPtr 
17
18  writeToRoots :: Int -> ObjectPtr -> m ()
19  writeToObject :: Value -> ObjectPtr -> m ()
20  writeToField :: Int -> ObjectPtr -> ObjectPtr -> m ()
21
22