> > > if you want this^ to be actually defined while compilation is
> > > happening (i.e. in the compilation stage; see staged computing), then
> > > you need to use an (eval-when (expand) ...) wrapper around it.
> 
> 
> > Thank you for the reply! Not sure what you mean. The following code
> > defines `a`:
>i ran with some ungrounded assumptions, and i basically explained how it works 
>in CL, not in Guile.

It works like that in (Guile) Scheme too. Though, to be precise, ‘expand’ 
refers to the macro expansion phase, whether compiling or not. ‘compile’ is for 
“evaluate during macro expansion, but not only when compiling”.

>[...]
>i briefly tired to find the place where DEFINE is compiled to check this 
>hypothesis in the code, but i couldn't find it.

In macro-expansion:
• 
https://git.savannah.gnu.org/cgit/guile.git/tree/module/ice-9/psyntax.scm#n1370 
 (also see mentions of ‘define-form’)

Evaluation:
• Probably somewhere in 
https://git.savannah.gnu.org/cgit/guile.git/tree/module/ice-9/eval.scm
• Perhaps somewhere in 
https://git.savannah.gnu.org/cgit/guile.git/tree/libguile/eval.c as well

In Tree-IL:
* 
https://git.savannah.gnu.org/cgit/guile.git/tree/module/language/tree-il.scm#n220
* 
https://git.savannah.gnu.org/cgit/guile.git/tree/module/language/tree-il.scm#n310

Also maybe see relevant optimisation code and other layers of the compilation 
tower.

Reply via email to