packages feed

mueval-0.9.4: src/Mueval/Parallel.hs

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 opts =
    let time = timeLimit opts * 1000000
        checkImport x = if noImports x then x{modules = Nothing} else x
     in void $ timeout time $ interpreterSession (checkImport opts)