[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issue: UNWIND-PROTECT-CLEANUP-NON-LOCAL-EXIT (Version 4)



In previous iterations of this proposal, I was one of the people who
forcefully argued for the "continuation model".  My primary concern was
that, as a compiler writer, my life would be substantially complicated by
proposals that required an error *to be signalled* when the appropriate
metaphysical violation of the dynamic extent of a lexical control construct
(i.e. BLOCK) happened.  This was where this example came from:

  (block foo
    (block bar
      (unwind-protect
          (return-from foo 'foo)
	(return-from bar 'bar))))

It is useful for a compiler to be able to have internal representations
which treat the same continuation as the same continuation, with FOO and
BAR just being different names for this.  Too many people out there are
wandering around thinking "BLOCK is the same as CATCH (and presumably
implemented using it.)"

I don't care if anyone wants case one to "be an error", I just don't want
it to be required to be signalled.

  Rob