Part 3: Defining LAMBDA++
Here you will learn how to define language constructs which abruptly change the execution control flow, and how to define language semantics following and environment/store style. Specifically, you will learn the following:
- How to define constructs like
callcc
, which allow you to take snapshots of program executions and to go back in time at any moment. - How to define languages in an environment/store style.
- Some basic notions about the use of closures and closure-like semantic structures to save and restore execution environments.
- Some basic intuitions about reusing existing semantics in new languages, as well as some of the pitfalls in doing so.