[Haskell-cafe] push/enter vs eval/apply question
7253146 at informatica.alumnos.uma.es
7253146 at informatica.alumnos.uma.es
Thu May 13 19:39:10 EDT 2004
Hi. I have read part of the paper "Making a fast curry. Push/enter vs
eval/apply for higher-order languages" (Simon Marlow ans Simon Peyton Jones,
http://research.microsoft.com/Users/simonpj/papers/eval-apply/eval-apply.ps),
where the tradeoffs of both currying models are discused. The paper takes the
STG machine as design model. Just as an exercise, I tried to find the curying
models for the G and TIM machines as described in "Implementing Functional
Languages: a tutorial" (Simon Peyton Jones and David R. Lester,
http://research.microsoft.com/Users/simonpj/Papers/pj-lester-
book/student.pdf.gz).
It was easy to find out that the fourth proposed implementation of the TIM
machine was push/enter-oriented ("UpdateMarkers" instruction checks inside a
function how many arguments it has been taken). But I have not find anything
about for the G machine. It seems to not care about the number of arguments of
a supercombinator: when one is evaluated, always have sufficient arguments, and
partial applications are simple subgraphs with a mini spine of applications. I
guess that only makes sense to talk about the two currying models push/enter
and eval/apply when the considered machine is spineless, because on "spineful"
or "spine-based" machines the graph of the lambda-calculus expression to
evaluate is explicitly represented in memory, so we can see currying as lambda-
application over generic lambda-variables.
I am very interested on this matter. Please confirm my guess or explain why I
am wrong, whoever knows it. Thanks in advance.
Regards,
Jose
David
---------------------------------------------
Este mensaje lo ha enviado un Alumno de la Universidad de Malaga.
http://www.alumnos.uma.es/
More information about the Haskell-Cafe
mailing list