diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-09-10 02:03:20 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-09-10 02:03:20 +0200 |
| commit | 8a0751dfb000451b394f1d6443532753595f5f19 (patch) | |
| tree | 7864fc21bd316cf82d607482ba3f0bb8b9f76823 /lib/Language/Elna/Intermediate.hs | |
| parent | bb33423c31d7553e9d8f98967da4975385b35646 (diff) | |
| download | elna-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.hs | 37 |
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 |
