Heya, Chris Marusich <cmmarus...@gmail.com> skribis:
> Ludovic Courtès <l...@gnu.org> writes: > >> +(define-syntax-rule (try-use-modules hint modules ...) >> + (eval-when (expand load eval) >> + (%try-use-modules '(modules ...) >> + (source-properties->location >> + (current-source-location)) >> + hint))) >> + > > Why is it necessary to use eval-when here? The Guile manual makes it > sound like eval-when is intended to be used with syntax-case macros, not > syntax-rules macros. It’s necessary because ‘use-modules’ (and ‘try-use-modules’ here) doesn’t allow you to specify the “phase” (run-time or expansion-time) at which you’re “using” the module. Thus, it assumes you’re using it both at expansion-time and at run-time. The (gnu packages …) modules happen to export a few macros, so it doesn’t work if you import them at run-time only. Ludo’.