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