Call-By-Name Is Just Call-By-Value with Delimited Control
Programming Languages
2023-06-22 v4
Abstract
Delimited control operator shift0 exhibits versatile capabilities: it can express layered monadic effects, or equivalently, algebraic effects. Little did we know it can express lambda calculus too! We present \Lambda_\ ,acall−by−valuelambdacalculusextendedwithshift0andcontroldelimiter $ withcarefullycraftedreductiontheory,suchthatthelambdacalculuswithbetaandetareductionscanbeisomorphicallyembeddedinto \Lambda_$ viaarightinverseofacontinuation−passingstyletranslation.Whilecall−by−namereductionsoflambdacalculuscantriviallysimulateitscall−by−valueversion,weshowthatadditionofshift0and $ isthegoldenmeanofexpressivepowerthatsufficestosimulatebetaandetareductionswhilestilladmittingasimulationback.Asacorollary,calculi \Lambda\mu_v , \lambda_$ , \Lambda_$ and \lambda $ all correspond equationally.
Cite
@article{arxiv.2212.08594,
title = {Call-By-Name Is Just Call-By-Value with Delimited Control},
author = {Mateusz Pyzik},
journal= {arXiv preprint arXiv:2212.08594},
year = {2023}
}