| Abstract:Plotkin, in his seminal article Call-by-name,
  call-by-value and the  -calculus, formalized evaluation strategies
  and simulations using operational semantics and continuations. In particular,
  he showed how call-by-name evaluation could be simulated under call-by-value
  evaluation and vice versa. Since Algol 60, however, call-by-name is both
  implemented and simulated with thunks rather than with continuations. We
  recast this folk theorem in Plotkin's setting, and show that thunks, even
  though they are simpler than continuations, are sufficient for establishing
  all the correctness properties of Plotkin's call-by-name simulation. 
  Furthermore, we establish a new relationship between Plotkin's two
  continuation-based simulations  and  , by 
  deriving  as the composition of our thunk-based simulation  and of  -- an extension of  handling
  thunks. Almost all of the correctness properties of  follow from
  the properties of  and  . This simplifies reasoning
  about call-by-name continuation-passing style. We also give several
  applications involving factoring continuation-based transformations using
  thunks 
Available as PostScript,
  PDF, 
  DVI.
 |