never executed always true always false
    1 module HelVM.HelMA.Automata.Rev.Evaluator (
    2   runRio,
    3   run,
    4   evalParams,
    5   eval,
    6 ) where
    7 
    8 import qualified HelVM.HelMA.Automaton.API.AppOptions as App
    9 import           HelVM.HelMA.Automaton.API.Emit
   10 import           HelVM.HelMA.Automaton.API.Env
   11 import           HelVM.HelMA.Automaton.API.EvalParams
   12 import           HelVM.HelMA.Automaton.API.IOTypes
   13 
   14 import           HelVM.HelMA.Automaton.Eff.MonadEff
   15 
   16 import           HelVM.HelMA.Automaton.Extra
   17 
   18 import qualified Data.Text                            as Text
   19 
   20 import qualified RIO
   21 
   22 runRio :: Has env => RIO.RIO env ()
   23 runRio = runWithOptions =<< optionsRio where
   24   runWithOptions o =  run (App.emit o) . App.evalParams o =<< readSourceFileRio
   25 
   26 run :: Has env => Emit -> EvalParams -> RIO.RIO env ()
   27 run No = runAsRIO . evalParams
   28 run _  = fallback
   29 
   30 evalParams :: AppEff m => EvalParams -> m ()
   31 evalParams = eval . source
   32 
   33 eval :: MonadEff m => Source -> m ()
   34 eval = evalLines . lines
   35 
   36 evalLines :: MonadEff m => [Source] -> m ()
   37 evalLines ll = doOutput $ unlines $ Text.reverse <$> ll
   38 
   39 doOutput :: MonadEff m => Source -> m ()
   40 doOutput = putLine