toplevel :: [String] -> IO (Either String String)
toplevel es = runExceptT $ evalStateT (toplevel' es) initialCtx
toplevel :: [String] -> IO (Either String String)
toplevel es = runExceptT $ evalStateT (toplevel' es) initialCtx
toplevel es = runExceptT $ evalStateT (toplevel' es) initialCtx