>compile does not evaluate (aka load) the definitions, it only compiles them.
Usually, sure, but in the code ‘#:to ‘value” was set. From the manual:
>As discussed before (see Object File Format), bytecode is in ELF format, ready to be serialized to disk. But when compiling Scheme at run time, you want a Scheme value: for example, a compiled procedure. For this reason, so as not to break the abstraction, Guile defines a fake language at the bottom of the tower:
> * Value
Now, as example it compiled a lambda expression into a procedure, but it can be done for Scheme expressions that don’t evaluate to procedures as well. The definition ‘(define a whatever)’ strictly speaking isn’t an expression, but it appears the compilation stack doesn’t care.
>alternatively, you yourself can explicitly call the lambda returned by compile.
In this particular case, no lambdas are returned.
Best regards,
Maxime Devos.