mueval-0.8: Safely evaluate Haskell expressions




interpreter :: Options -> Interpreter (String, String, String)Source

The actual calling of Hint functionality. The heart of this just calls eval, but we do so much more - we disable Haskell extensions, hide all packages, make sure one cannot call unimported functions, typecheck, set resource limits for this thread, and do some error handling.

interpreterSession :: Options -> IO ()Source

Wrapper around interpreter; supplies a fresh GHC API session and error-handling. The arguments are largely passed on, and the results lightly parsed.

sayIO :: String -> IO ()Source

Print the String (presumably the result of interpreting something), but only print the first 1024 characters to avoid flooding. Lambdabot has a similar limit.

printInterpreterError :: InterpreterError -> IO ()Source

Oh no, something has gone wrong. If it's a compilation error pretty print the first 1024 chars of it and throw an ExitException otherwise rethrow the exception in String form.



:: MonadIO m 
=> Int

max number of characters to include

-> String


-> m (String, Bool)

( output, True if we found an exception )

Renders the input String including its exceptions using exceptionMsg

data Stream Source


Cons Char (IO Stream) 
Exception (IO Stream)