Mon Aug 24 11:03:53 CEST 2009
Different continuation types
Continuing the ideas in . Starting with the following context:
* A partial application is a binding of data context to code.
Suppose you have an object referenced by `ob' and an operation
`op' that expects such an object as the first parameter on the
stack, the following code would be a closure:
* In Joy, code == data. Its VM wouldn't need to distinguish pairs
for code, partial applications and partial continuations. Their
difference is only visible through usage: they are all represented
* In PF, these 3 need a different representation because code is
nonlinear, while partial applications and continuations are
What about this:
and stack = Empty | Next of datum * stack
and cont = Done | Next of sub * cont
| Data of datum * cont
Wait. There is already a mechanism to construct partial applications
as continuations: `dip' followed by `run'.
The question is then: what is best? Explicit tagging (using different
continuation frame types) or ``prefix parsing''.
It seems to me that tagging is better behaved: in that case each frame
has its meaning isolated, and doesn't depend on the meaning of the
previous frame. So be it: tagged frames. This also makes `dip'