Thirty-five years ago, thunks were used to simulate call-by-name under call-by-value in Algol 60. Twenty years ago, Plotkin presented continuation-based simulations of call-by-name under call-by-value and vice versa in the λ-calculus. We connect all three of these classical simulations by factorizing the continuation-based call-by-name simulation [script C]n with a thunk-based call-by-name simulation [script T] followed by the continuation-based call-by-value simulation [script C]v, extended to thunks. formula here We show that [script T] actually satisfies all of Plotkin's correctness criteria for [script C]n (i.e. his Indifference, Simulation and Translation theorems). Furthermore, most of the correctness theorems for [script C]n can now be seen as simple corollaries of the corresponding theorems for [script C]v and [script T].
Journal of Functional Programming, 1997, Vol 7, Issue 3, p. 303-319