Tue Aug 4 20:32:34 CEST 2009
So.. ISWIM uses n-ary primitive application, but unary abstraction and
application. Why is this? It seems that it makes the extension of
the environment on application easier: only a single variable has to
Maybe this isn't necessary for Scheme. A multivalued application adds
all variables at the same time. Instead of arg,fun,opd as explained
in PLLC, I needs just a single type that evaluates all variables in an
application from left to right, starting with the function position,
and then performs either an application (extending the environment) or
a primitive evaluation (production of a value).
So how to represent (x x x _ x x x) where "_" is the hole?
In short: what does the CEKS machine do?
It converts the current expression and its continuation in a
simplified expression and an updated continuation. It is
_application_ (triggered by the availability of the last argument)
that _pops_ the K stack.
So.. Representing continuations.
(((f a b) E) K) -> ( _ (((f E) (a E) (b E)) K))
-> ((f E) (((a E) (b E)) K))