never executed always true always false
    1 module HelVM.HelMA.Automata.Piet.Combiner.CPU
    2   ( pietPointer
    3   , pietSwitch
    4   ) where
    5 
    6 import           HelVM.HelMA.Automata.Piet.Types.Memory
    7 
    8 import           HelVM.HelMA.Automata.Piet.Types.InstructionMemory
    9 
   10 import           HelVM.HelMA.Automaton.Combiner.ALU
   11 
   12 import qualified Data.Sequence                                     as Seq
   13 
   14 pietPointer ∷ (ALU m (Seq.Seq Int) Int) ⇒ Memory → m Memory
   15 pietPointer = modifyIM "pointer" directionPointerIM rotateDirectionPointerIM
   16 
   17 pietSwitch ∷ (ALU m (Seq.Seq Int) Int) ⇒ Memory → m Memory
   18 pietSwitch = modifyIM "switch" codelChooserIM toggleCodelChooserIM
   19 
   20 modifyIM ∷ (ALU m (Seq.Seq Int) Int, Show a) ⇒ Text → (InstructionMemory → a) → (Int → InstructionMemory → InstructionMemory) → Memory → m Memory
   21 modifyIM name getValue f (Memory im s) = logWithPosition (name <> " " <> show (getValue im)) im *> (updateMemory <$> pop1 s) where
   22   updateMemory (n, s') = Memory (f n im) s'