From 3b73ff6adc67b0d1e07e6be4ba7712c22d7a7e77 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Fri, 17 Feb 2023 16:11:00 +0100 Subject: Pass errors using MonadFail, avoid aborts --- snug-clean/src/Snug/Compile/Simulate.dcl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'snug-clean/src/Snug/Compile/Simulate.dcl') 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 -- cgit v1.2.3