hint library defines an Interpreter monad. It allows to load Haskell modules, browse them, type-check and evaluate strings with Haskell expressions and even coerce them into values.
The hint library is type-safe and thread-safe (even the coercion of expressions to values). It is, esentially, a huge subset of the GHC API wrapped in a simpler API.