[parenscript-devel] Problem with BLOCK and RETURN-FROM

Daniel Gackle danielgackle at gmail.com
Thu Dec 9 07:13:40 UTC 2010


Oh, I'm sorry. I normally strip out any project-specific macro forms,
but this time λ slipped through. It can just be replaced with LAMBDA
in the examples I supplied. So I think your assumption is incorrect.
In my example #1, the lambda doesn't explicitly return anything.
Rather, it's the implicit return of (foo 123) that's causing the complaint.
In other words, to get rid of the warning, you'd have to put a BLOCK NIL
form at the start of every lambda, which is bad.

Can you either confirm that there is a bug as I described it, or that I
got it wrong?

< Indeed I've changed RETURN to try to work like it does in CL. If
there's no nil block it will still work, but issue a warning to
encourage people to change their code. >

I'm a little unsure yet how this works in practice. I'll try compiling our
code
and looking at the generated output once the main bugs I reported have
been fixed, and will report back with the details.



2010/12/8 Vladimir Sedach <vsedach at gmail.com>

> I'm assuming λ is a macro that expands into a lambda that does (RETURN
> <something>).
>
> Indeed I've changed RETURN to try to work like it does in CL. If
> there's no nil block it will still work, but issue a warning to
> encourage people to change their code.
>
> An easy way to get around this warning in your case is to make λ wrap
> its body in a (block nil ...).
>
> Vladimir
>
> 2010/12/6 Daniel Gackle <danielgackle at gmail.com>:
> > (1) The following expression generates the correct code:
> > (defun blah ()
> >    (λ ()
> >     (foo 123)))
> > But it also emits "Warning: Returning from unknown block NILBLOCK",
> > which is undeserved.
> > (2) It's not clear how to do explicit return from a lambda now. That is,
> > (defun blah ()
> >   (λ ()
> >     (when (foo)
> >       (return 123))
> >     ;; do some other stuff
> >     ))
> > generates the same warning as above. Is this just a bug, or is it
> suggesting
> > that one must explicitly declare a scope using (BLOCK NIL...) in order
> > to do an explicit return warning-free? I'm hoping not the latter.
> >
> >
> >
> > _______________________________________________
> > parenscript-devel mailing list
> > parenscript-devel at common-lisp.net
> > http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
> >
> >
>
> _______________________________________________
> parenscript-devel mailing list
> parenscript-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/parenscript-devel/attachments/20101209/02aacc8c/attachment.html>


More information about the parenscript-devel mailing list