never executed always true always false
1 module HelVM.HelMA.Automata.LazyK.Evaluator (
2 runRio,
3 run,
4 evalParams,
5 evalSource,
6 reduceSource,
7 ) where
8
9 import HelVM.HelMA.Automata.LazyK.Automaton
10 import HelVM.HelMA.Automata.LazyK.InputEncoder
11 import HelVM.HelMA.Automata.LazyK.Lambda
12 import HelVM.HelMA.Automata.LazyK.Parser
13
14 import HelVM.HelMA.Automata.LazyK.Reducer
15
16 import qualified HelVM.HelMA.Automaton.API.AppOptions as App
17 import HelVM.HelMA.Automaton.API.Emit
18 import HelVM.HelMA.Automaton.API.Env
19 import HelVM.HelMA.Automaton.API.EvalParams
20 import HelVM.HelMA.Automaton.API.IOTypes
21
22 import HelVM.HelMA.Automaton.Eff.MonadEff
23
24 import HelVM.HelMA.Automaton.Extra
25
26 import qualified RIO
27
28 runRio :: Has env => RIO.RIO env ()
29 runRio = runWithOptions =<< optionsRio where
30 runWithOptions o = run (App.emit o) . App.evalParams o =<< readSourceFileRio
31
32 run :: Has env => Emit -> EvalParams -> RIO.RIO env ()
33 run No = runAsRIO . evalParams
34 run _ = fallback
35
36 evalParams :: AppEff m => EvalParams -> m ()
37 evalParams = evalSource . source
38
39 evalSource :: AppEff m => Source -> m ()
40 evalSource = evalLambda <=< parse
41
42 evalLambda :: AppEff m => Lambda -> m ()
43 evalLambda lambda = (runAutomat . reduce . App lambda . readInput) =<< getContentsBS
44
45 reduceSource :: AppEff m => Source -> m Source
46 reduceSource s = show . reduce <$> parse s