[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: CPS in Parrot
On Saturday, August 9, 2003, at 05:56 PM, Dave Long wrote:
>
>> Dan is right when he says that we shouldn't think of them as
>> plain functions and Scheme may have made a mistake there.
>
> A contributing factor* (from a symmetry
> view) may be the REPL orientation, which
> leads to thinking of Expressions being
> evaluated to produce Values, but if one
> takes Continuations as dual to Values,
> then:
>
> Values (1->A) are what they are, and can
> be passed to a Function (A->B) to yield
> a new Value (1->B), or handed off to a
> Continuation (A->0) of the right shape.
>
> Functions can act on Values, as above,
> and on Continuations, as below, and can
> also be composed directly, from (Z->A)
> and (A->B) to (Z->B).
>
> Continuations (A->0) are what they are,
> and can be composed with a Function (Z->A)
> to yield a new Continuation (Z->0), or
> passed a Value (1->A) of the right shape.
>
> Andrzej Filinski, Declarative Continuations and Categorical Duality
> <http://citeseer.nj.nec.com/filinski89declarative.html>
>
Thanks. I am fully aware of this categorical description, but you have
put
it nicely here for everyone who should be in computer science.
Of course, this doesn't change anything about the general idea that
continuations are abstract objects (in a category here) with abstract
operations on them (arrow composition).
> Landin makes sure to note that an ISWIM
> program-point definition introduces a
> "deviant" kind of function, not a plain
> one.
>
Yes, but you need to understand that Landin's program points are even
more powerful than call/cc-style continuation objects. On top of J you
can
find F, which blows it away. And then there is G, which is the top-most
control operator.
-- Matthias, on a nostalgic trip to the past