Extended Call-by-Push-Value: Reasoning About Effectful Programs and Evaluation Order
- Submitting institution
-
University of Cambridge
- Unit of assessment
- 11 - Computer Science and Informatics
- Output identifier
- 1936
- Type
- E - Conference contribution
- DOI
-
10.1007/978-3-030-17184-1_9
- Title of conference / published proceedings
- Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
- First page
- 235
- Volume
- 11423 LNCS
- Issue
- -
- ISSN
- 0302-9743
- Open access status
- Compliant
- Month of publication
- January
- Year of publication
- 2019
- URL
-
-
- Supplementary information
-
-
- Request cross-referral to
- -
- Output has been delayed by COVID-19
- No
- COVID-19 affected output statement
- -
- Forensic science
- No
- Criminology
- No
- Interdisciplinary
- No
- Number of additional authors
-
1
- Research group(s)
-
-
- Citation count
- -
- Proposed double-weighted
- No
- Reserve for an output with double weighting
- No
- Additional information
- A long-standing problem in compilers is determining when it is safe to re-order computations in the presence of side-effects such as I/O. This problem is largely solved for the case "can I move this computation from here to here". However, there are no general techniques for deciding (say) which Haskell programs work as expected using eager evaluation. Levy's seminal work on "call-by-push value" encodes both call-by-value and call-by-need in his CBPV calculus (which could not model Haskell's lazy evaluation). This paper defines an expanded ECBPV calculus which also captures call-by-need. It won the EAPLS "best paper" award at ESOP'2019.
- Author contribution statement
- -
- Non-English
- No
- English abstract
- -