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

Re: Rabbit



>       From: shivers
>       That's because CALL/CC doesn't distinguish these things. It's too damn
>       powerful. I do not like CALL/CC. It messes up my foundations for
>       reasoning about programs. And if it interferes with human reasoning,
>       that goes double for compiler analysis.
> 
>    From: jaffer
>    In Steel's 1978 Thesis on the Rabbit (optimizing) compiler, he uses
>    continuation-passing-style lambda as the compiler's intermediate form.
>    Although call-with-current-continuation was not part of Scheme at that
>    time it clearly would have been trivially handled by the compiler.  So
>    I don't think any problems your compiler is having with CWCC are
>    universal.

I'm pretty sure Rabbit handled a similar form called CATCH.  But I'm
also pretty sure CATCH was a special form.  CALL/CC could presumably
be defined using CATCH, but whether all of the CATCH optimizations
could still be done is less clear.  On the other hand, there must be 
more recent compilers that take the Rabbit approach of converting
to continuation-passing style, and they will handle CALL/CC directly.

Nonetheless, I agree that CALL/CC is too powerful.  I would rather
have coroutines/stack-groups or lightweight processes that CALL/CC
even though (indeed, in part becuase) they are less general.

-- jd