Eval package:ghc-lib

We can pass simple expressions to EvalStmt, consisting of values and application. This allows us to wrap the statement to be executed in another function, which is used by GHCi to implement :set args and :set prog. It might be worthwhile to extend this little language in the future.
Evaluate something of type IO ()
Evaluate a statement
Evaluate something of type IO String
Evaluate something of type String -> IO String
Execute an action of type IO ()
Execute an action of type IO [a], returning ForeignHValues for each of the results.
Execute an action of type IO String
Execute an action of type String -> IO String
Whether to perform speculative evaluation See Note [Controlling Speculative Evaluation]