 
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 e#cient than CBN.
