Conference item
From push/enter to eval/apply by program transformation
- Abstract:
- Push/enter and eval/apply are two calling conventions used in implementations of functional languages. In this paper, we explore the following observation: when considering functions with multiple arguments, the stack under the push/enter and eval/apply conventions behaves similarly to two particular implementations of the list datatype: the regular cons-list and a form of lists with lazy concatenation respectively. Along the lines of Danvy et al.'s functional correspondence between definitional interpreters and abstract machines, we use this observation to transform an abstract machine that implements push/enter into an abstract machine that implements eval/apply. We show that our method is flexible enough to transform the push/enter Spineless Tagless G-machine (which is the semantic core of the GHC Haskell compiler) into its eval/apply variant.
- Publication status:
- Published
- Peer review status:
- Peer reviewed
Actions
Access Document
- Files:
-
-
(Preview, Version of record, pdf, 89.5KB, Terms of use)
-
- Publisher copy:
- 10.4204/EPTCS.212.4
Authors
- Publisher:
- Electronic Proceedings in Theoretical Computer Science (EPTCS)
- Host title:
- Workshop on Continuations
- Journal:
- Proceedings of the Workshop on Continuations (WoC 2015) More from this journal
- Publication date:
- 2015-04-12
- DOI:
- Keywords:
- Pubs id:
-
pubs:629623
- UUID:
-
uuid:2b857e40-2f44-441f-8d71-19e61d6d0b3f
- Local pid:
-
pubs:629623
- Source identifiers:
-
629623
- Deposit date:
-
2016-06-24
Terms of use
- Copyright holder:
- Maciej Piróg and Jeremy Gibbons
- Copyright date:
- 2015
- Notes:
-
This work is licensed under the
Creative Commons Attribution License CC BY 3.0 (http://creativecommons.org/licenses/by/3.0/).
- Licence:
- CC Attribution (CC BY)
If you are the owner of this record, you can report an update to it here: Report update to this record