>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.