From 8a0751dfb000451b394f1d6443532753595f5f19 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 10 Sep 2024 02:03:20 +0200 Subject: Add a state monad transformer to the Elf generator --- lib/Language/Elna/Intermediate.hs | 37 ------------------------------------- 1 file changed, 37 deletions(-) (limited to 'lib/Language/Elna/Intermediate.hs') 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 -- cgit v1.2.3