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

Daniel Gackle danielgackle at gmail.com
Thu Dec 9 20:41:09 UTC 2010


You're absolutely right! We used to have a poor-man's implicit return before
you added that
feature to PS, and the definition of λ includes a vestige of it. Yikes, I'm
surprised I
didn't know that. Thanks for the help and sorry for the confusion.

I think the only bug preventing us from moving forward is the syntax error
where THROW
gets treated as an expression in a PROGN. Can you confirm (or deny :)) that
one?

Daniel


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

> > Can you either confirm that there is a bug as I described it, or that I
> > got it wrong?
>
> I'm positive you're doing a RETURN of something in the first example.
> Implicit returns don't generate that warning.
>
> Vladimir
>
> > < 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
> >
> >
> > _______________________________________________
> > 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/05f0a94b/attachment.html>


More information about the parenscript-devel mailing list