module Mueval.Parallel (runMueval) where import Control.Monad (void) import Mueval.ArgsParse (Options (modules, noImports, timeLimit)) import Mueval.Interpreter (interpreterSession) import System.Timeout (timeout) runMueval :: Options -> IO () runMueval :: Options -> IO () runMueval Options opts = let time :: Int time = Options -> Int timeLimit Options opts Int -> Int -> Int forall a. Num a => a -> a -> a * Int 1000000 checkImport :: Options -> Options checkImport Options x = if Options -> Bool noImports Options x then Options x{modules = Nothing} else Options x in IO (Maybe ()) -> IO () forall (f :: * -> *) a. Functor f => f a -> f () void (IO (Maybe ()) -> IO ()) -> IO (Maybe ()) -> IO () forall a b. (a -> b) -> a -> b $ Int -> IO () -> IO (Maybe ()) forall a. Int -> IO a -> IO (Maybe a) timeout Int time (IO () -> IO (Maybe ())) -> IO () -> IO (Maybe ()) forall a b. (a -> b) -> a -> b $ Options -> IO () interpreterSession (Options -> Options checkImport Options opts)