---------- Forwarded message ----------
From: Stefan Israelsson Tampe <[email protected]>
Date: Mon, Jun 13, 2011 at 1:03 PM
Subject: Re: `set!' of generated temporary in macro expansion causes warning
To: Andreas Rottmann <[email protected]>


It looks like you just put the symbol in the current module, so maybe the
warning is
just unessesary.

here is the code in psyntax:

(define get-global-definition-hook
        (lambda (symbol module)
          (if (and (not module) (current-module))
              (warn "module system is booted, we should have a module"
symbol))
          (let ((v (module-variable (if module
                                        (resolve-module (cdr module))
                                        (current-module))
                                    symbol)))


so module parameter beeing #f will lead to a warning and an evaluation of
   (module-variable (current-module) symbol)

So if it's ok for the temporaries to be in the current-module then the
warning need to silenced.

E.g. In
(set! generate-temporaries
          (lambda (ls)
            (arg-check list? ls 'generate-temporaries)
(map (lambda (x) (wrap (gensym-hook) top-wrap #f)) ls)))

Replace #f with (current-module) and you will not have a warning. But My
psyntax-fu is
weak so this is just my 2c.

Be aware that changing this can pollute  current-module

/Stefan




On Mon, Jun 13, 2011 at 12:10 PM, Andreas Rottmann <[email protected]>wrote:

> Hi!
>
> This is a much-stripped-down version of a `define-values' macro,
> exposing what seems like a psyntax bug:
>
> % cat guile-psyntax-temp-set-issue.scm
> (define-syntax define+set!
>  (lambda (form)
>    (syntax-case form ()
>      ((_)
>       (with-syntax (((mutable-id) (generate-temporaries '(id))))
>         #'(begin
>             (define mutable-id #f)
>             (set! mutable-id #t)))))))
>
> (define+set!)
>
> % guile guile-psyntax-temp-set-issue.scm
> ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
> ;;;       or pass the --no-auto-compile argument to disable.
> ;;; compiling /home/rotty/tmp/guile-psyntax-temp-set-issue.scm
>
> ;;; WARNING (module system is booted, we should have a module #{ g65}#)
> ;;; compiled
> /home/rotty/.cache/guile/ccache/2.0-LE-8-2.0/home/rotty/tmp/guile-psyntax-temp-set-issue.scm.go
>
> Note the WARNING line; it seems during expansion something goes wrong
> wrt. to modules -- it'd be really nice if some psyntax guru can have a
> look at this.
>
> Regards, Rotty
> --
> Andreas Rottmann -- <http://rotty.yi.org/>
>
>

Reply via email to