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