summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/Intermediate.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-09-10 02:03:20 +0200
committerEugen Wissner <belka@caraus.de>2024-09-10 02:03:20 +0200
commit8a0751dfb000451b394f1d6443532753595f5f19 (patch)
tree7864fc21bd316cf82d607482ba3f0bb8b9f76823 /lib/Language/Elna/Intermediate.hs
parentbb33423c31d7553e9d8f98967da4975385b35646 (diff)
downloadelna-8a0751dfb000451b394f1d6443532753595f5f19.tar.gz
Add a state monad transformer to the Elf generator
Diffstat (limited to 'lib/Language/Elna/Intermediate.hs')
-rw-r--r--lib/Language/Elna/Intermediate.hs37
1 files changed, 0 insertions, 37 deletions
diff --git a/lib/Language/Elna/Intermediate.hs b/lib/Language/Elna/Intermediate.hs
index d334661..ff2b115 100644
--- a/lib/Language/Elna/Intermediate.hs
+++ b/lib/Language/Elna/Intermediate.hs
@@ -23,7 +23,6 @@ intermediate _globalTable = const $ Vector.fromList [StartQuadruple, StopQuadrup
. runIntermediate
. program globalTable -}
{-
-import Control.Monad.Trans.State (State, runState, gets, modify')
import Data.Bifunctor (Bifunctor(..))
import Data.Int (Int32)
import Data.HashMap.Strict (HashMap)
@@ -59,42 +58,6 @@ instance Show Variable
show (Variable variable) = '$' : Text.unpack variable
show (TempVariable variable) = '$' : show variable
-data Generator = Generator
- { labelCounter :: Int32
- , temporaryCounter :: Int32
- } deriving (Eq, Show)
-
-instance Semigroup Generator
- where
- lhs <> rhs = Generator
- { labelCounter = getField @"labelCounter" lhs + getField @"labelCounter" rhs
- , temporaryCounter = getField @"temporaryCounter" lhs + getField @"temporaryCounter" rhs
- }
-
-instance Monoid Generator
- where
- mempty = Generator
- { labelCounter = 0
- , temporaryCounter = 0
- }
-
-newtype Intermediate a = Intermediate
- { runIntermediate :: State Generator a
- }
-
-instance Functor Intermediate
- where
- fmap f (Intermediate x) = Intermediate $ f <$> x
-
-instance Applicative Intermediate
- where
- pure = Intermediate . pure
- (Intermediate f) <*> (Intermediate x) = Intermediate $ f <*> x
-
-instance Monad Intermediate
- where
- (Intermediate x) >>= f = Intermediate $ x >>= (runIntermediate . f)
-
data Quadruple
= StartQuadruple
| GoToQuadruple Label