Mueval.Interpreter
- interpreter :: Options -> Interpreter (String, String, String)
- interpreterSession :: Options -> IO ()
- mvload :: FilePath -> IO ()
- sayIO :: String -> IO ()
- printInterpreterError :: InterpreterError -> IO ()
- exceptionMsg :: String
- render :: (Functor m, MonadIO m) => Int -> String -> m (String, Bool)
- data Stream
- toStream :: String -> IO Stream
Documentation
interpreter :: Options -> Interpreter (String, String, String)
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 ()
Wrapper around interpreter
; supplies a fresh GHC API session and
error-handling. The arguments are largely passed on, and the results lightly parsed.
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 ()
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.