aboutsummaryrefslogtreecommitdiff
path: root/snug-clean/src/Snug/Compile/Simulate.dcl
diff options
context:
space:
mode:
authorCamil Staps2023-02-17 16:11:00 +0100
committerCamil Staps2023-02-17 16:11:00 +0100
commit3b73ff6adc67b0d1e07e6be4ba7712c22d7a7e77 (patch)
tree17d253f6cf87f4f3c9a2e979fd2230c998ec88de /snug-clean/src/Snug/Compile/Simulate.dcl
parentAdd basic vim support (diff)
Pass errors using MonadFail, avoid aborts
Diffstat (limited to 'snug-clean/src/Snug/Compile/Simulate.dcl')
-rw-r--r--snug-clean/src/Snug/Compile/Simulate.dcl5
1 files changed, 3 insertions, 2 deletions
diff --git a/snug-clean/src/Snug/Compile/Simulate.dcl b/snug-clean/src/Snug/Compile/Simulate.dcl
index bf01675..b131f34 100644
--- a/snug-clean/src/Snug/Compile/Simulate.dcl
+++ b/snug-clean/src/Snug/Compile/Simulate.dcl
@@ -7,13 +7,14 @@ from Control.Monad.Identity import :: Identity, instance Functor Identity,
from Control.Monad.State import :: State, :: StateT,
instance Functor (StateT s m), instance Monad (StateT s m),
instance pure (StateT s m), instance <*> (StateT s m)
+from Data.Error import :: MaybeError
from Data.Functor import class Functor
from MIPS.MIPS32 import :: Immediate, :: Instruction, :: Label, :: Offset,
:: Register
from Snug.Syntax import :: BasicValue
-:: Simulator a :== State SimulationState a
+:: Simulator a :== StateT SimulationState (MaybeError String) a
:: SimulationState
@@ -24,7 +25,7 @@ from Snug.Syntax import :: BasicValue
/* for internal use only: */
| SVImmediate !Immediate
-simulate :: ![StackValue] !(Simulator a) -> [Instruction]
+simulate :: ![StackValue] !(Simulator a) -> MaybeError String [Instruction]
stackSize :: Simulator Int