$#     Safe %&9;<=AOT cView type for inspecting the first instruction. This is very similar to pattern matching on lists. The case  (Return a)N means that the program contains no instructions and just returns the result a. The case (someInstruction :>>= k)& means that the first instruction is someInstruction4 and the remaining program is given by the function k.The abstract data type  instr m a+ represents programs over a base monad mO, i.e. sequences of primitive instructions and actions from the base monad.The primitive instructions# are given by the type constructor instr :: * -> *.m" is the base monad, embedded with .a! is the return type of a program. instr mX is a monad transformer and automatically obeys both the monad and the lifting laws.KView type for inspecting the first instruction. It has two constructors  and :>>=4. (For technical reasons, they are documented at .)The abstract data type  instr aC represents programs, i.e. sequences of primitive instructions.The primitive instructions# are given by the type constructor instr :: * -> *.a! is the return type of a program. instr> is always a monad and automatically obeys the monad laws.3View function for inspecting the first instruction.pUtility function that extends a given interpretation of instructions as monadic actions to an interpration of s as monadic actions.GThis function can be useful if you are mainly interested in mapping a  to different standard monads, like the state monad. For implementing a truly custom monad, you should write your interpreter directly with  instead.1Program made from a single primitive instruction. 3View function for inspecting the first instruction. ULift a plain sequence of instructions to a sequence of instructions over a monad m%. This is the counterpart of the  function from .It can be defined as follows:  liftProgram = eval . view where eval :: ProgramView instr a -> ProgramT instr m a eval (Return a) = return a eval (i :>>= k) = singleton i >>= liftProgram . k           *operational-0.2.3.4-KcVWhW3sH1gI97YQYaVdUkControl.Monad.Operational ProgramViewTReturn:>>=ProgramT ProgramViewProgramviewinterpretWithMonad singletonviewT liftProgram$fMonadReaderrProgramT$fMonadIOProgramT$fMonadStatesProgramT$fApplicativeProgramT$fFunctorProgramT$fMonadTransProgramT$fMonadProgramTtransformers-0.5.2.0Control.Monad.Trans.Classlift MonadTransLiftBindInstr