[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, 
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, 

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.



Este mensaje lo ha enviado un Alumno de la Universidad de Malaga.

More information about the Haskell-Cafe mailing list