 
Summary: Minimal Thunkification
Torben Amtoft
internet: tamtoft@daimi.aau.dk
Computer Science Department, Aarhus University
Ny Munkegade, DK8000 °Arhus C, Denmark
Abstract. By "thunkifying" the arguments to function applications and
"dethunkifying" variables one can translate a expression e into a 
expression e , such that callbyvalue evaluation of e gives the same
result as callbyname evaluation of e. By using the result of a strictness
analysis, some of these thunkifications can be avoided. In this paper
we present a type system for strictness analysis; present a translation
algorithm which exploits the strictness proof tree; and give a combined
proof of the correctness of the analysis/translation.
1 Introduction
We shall consider the following problem: given expression e, find a expression
e such that e when evaluated using a callbyname strategy yields the same re
sult as e when evaluated using a callbyvalue strategy. The reason why this is
interesting is that it is more convenient [Hug89] to program in a lazy language
than in an eager (the former also enjoys the nice property of referential trans
parency); and that CBV traditionally is considered more efficient than CBN.
