[parenscript-devel] A simpler way to do multiple value return? (Was: PS test failures in 7be9b45)

Vladimir Sedach vsedach at gmail.com
Sat Sep 15 18:21:37 UTC 2012


Hi Dan,

> I sketched an argument why extra instrumentation isn't needed in these
> two cases. If that argument is wrong (which it may well be) then we
> should be able to give examples where the pure global-variable (GV)
> design fails in the absence of such implementation. That is:
>
> (1) An example where an uninstrumented throw causes the GV
>     implementation to be wrong; and

I thought that something like the following could be developed into a
counterexample:

(progn
    (defun foo (x)
      (try
       (if (= 0 x)
           (values 1 2 3)
           (bar))
       (:catch (e) 27)))

    (defun bar ()
      (foo 0)
      (throw 13))

    (multiple-value-bind (a b c) (foo 1)
      (list a b c)))

But because of implicit returns, I don't see how.

I guess the implementation is safe in that respect.

Vladimir




More information about the parenscript-devel mailing list