PL Junior is a tradition of Northeastern's Programming Research Laboratory since ????. It is a weekly meeting of mostly first and second year phd students studying and discussing a variety of topics in programming languages research. However, anyone interested in learning PL topics is welcome.
- Artem Pelenitsyn
Topic: Intro to CPS
Guest lecturer: William Bowmen
Outline of the lecture:
- What is CPS? Continuation-Passing style, and transformations from direct style in CPS.
- Why CPS?
- Making control-flow explicit Used in concurrent programming, such as GUI programming (call-backs are continuations).
- Making evaluation order explicit Need to force evaluation to a value in CBN, or force CBN on a CBV machine.
- Internalize the evaluation context To express control effects internally in the language.
- A translation that makes values and computation distinct. Bad news: code is not actually data.
- Untyped CPS
- "Plotkin's translation"
- CBV
- CBN
- translating the evaluation context directly.
- machine semantics
- naturality
- Typed CPS
- value vs computation vs programs (and their types)
- "Double negation"
- Fixed answer type
- Actually, this is double negation to.
- Locally polymoprhic answer type
- Actually, this is double negation to.
The following is optional:
-
Papers to read:
- Gordon Plotkin. Call-by-name, call-by-value, and the λ-calculus. Theoretical Computer Science: 1975
http://homepages.inf.ed.ac.uk/gdp/publications/cbn_cbv_lambda.pdf- Ben Greenman's summary of this paper:
http://www.ccs.neu.edu/home/types/resources/notes/call-by-name-call-by-value/extended-intro.pdf
- Ben Greenman's summary of this paper:
- Gordon Plotkin. Call-by-name, call-by-value, and the λ-calculus. Theoretical Computer Science: 1975
-
A bunch of resources on good pedagogical presentations of CPS:
http://lists.seas.upenn.edu/pipermail/types-list/2018/002000.html -
Essentials of Programming Languages, Chapter 6
Topic: ANF/continuations
Papers to read for this week:
- Reasoning about Programs in Continuation Passing Style:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.7234&rep=rep1&type=pdf
Progress: Page 1 -- 4
We read pages 1-4.
Papers that will follow later in this series:
- The Essence of Compiling with Continuations
https://slang.soe.ucsc.edu/cormac/papers/pldi93.pdf - Compiling with Continuations, Continued
https://www.microsoft.com/en-us/research/wp-content/uploads/2007/10/compilingwithcontinuationscontinued.pdf - Compiling without Continuations
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/compiling-without-continuations.pdf
- Reasoning about Programs in Continuation Passing Style: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.7234&rep=rep1&type=pdf
Picking up on page 5
Topic: ANF/continuations (Continued)
Papers:
- Reasoning about Programs in Continuation Passing Style:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.7234&rep=rep1&type=pdf
Progress: Page 5
Topic: ANF/continuations (Continued Continued)
Papers:
- Reasoning about Programs in Continuation Passing Style:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.7234&rep=rep1&type=pdf
Progress: Page 6 --10 (Before section 5)
Notes: https://github.com/PLJunior/Fall18/blob/master/notes-10-08.pdf
Topic: ANF/continuations
Papers:
- Reasoning about Programs in Continuation Passing Style:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.7234&rep=rep1&type=pdf
Progress: -- Page 11 (Before the definition of 'size')
Topic: Same
Papers: Same
Progress: Finished section 5
Homework reading: Section 6 of conference paper version:
Topic: Same
Papers: Same
Progress: Finished section 6
Homework reading: Section 7 and 8
New time and location: 5 pm in 366
Topic: Same
Papers: Same
Progress: Finished paper
What to next: We discussed what to do next. There were three options:
- more CPS
- monad
- algebraic effects
We voted for learning monad from Wadler's paper:
(...link to be appear...)
The following is topics brought up for this semester's meetings:
Voting
8 TAPL / ATAPL
6 Coq
8 Compiling with Continuations / ANF
5 Staging
7 Types papers
5 Static analysis
Textbook exercises
Later chapters of TAPL
Advanced TAPL
Software Foundations (later books/volumes)
Certified Programming with Dependent Types
Summer schools
OPLSS
DeepSpec
Reading papers / textbooks
Compiling with Continuations / without Continuations
ANF
Staging
Unifying Subtyping and Polymorphism
Familia? (OOPSLA 2017)
Static analysis
Type-preserving compilation
Conference talks / lectures
Compilers, inlining
Intermediate representations (compilers)
Maybe schedule practice talks / writing feedback separately