R5RS says the "load" function yields an undefined value.
As implemented in TinyScheme, load_string, returns the EOF_OBJ.
But it is evaluating what it loads. Why not return the value of the last eval? In tune with functional programming principles: every function returns a value. Returning EOF_OBJ is useless. Whereas if it instead returns the value of the last eval, load_string (which is exported by the interface) can be used from C to call arbitrary pre-defined functions.
The context is that I help maintain the GIMP TinyScheme. I want to call into the interpreter and evaluate
(defined? <symbol>). </symbol>
Use of scheme_call, another exported function, that also might let you call an arbitrary function predefined in Scheme, has been discussed various places on the web.
Especially how it is difficult to use, especially with GIMP.