push/enter vs eval/apply question

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/
participants (1)
-
7253146@informatica.alumnos.uma.es