6. Strongly normalizing vs weakly normalizing vs non-normalizing; Church-Rosser Theorem(s)
7. Encoding pairs (and triples and ...)
6. Strongly normalizing vs weakly normalizing vs non-normalizing; Church-Rosser Theorem(s)
7. Encoding pairs (and triples and ...)
13. Representing lists as folds
14. Typical higher-order functions: map, filter, fold
13. Representing lists as folds
14. Typical higher-order functions: map, filter, fold
16. [Phil/ling application] Partee on whether NPs should be uniformly interpreted as generalized quantifiers, or instead "lifted" when necessary. Lifting = a CPS transform.
17. [Phil/ling application] Expletives
16. [Phil/ling application] Partee on whether NPs should be uniformly interpreted as generalized quantifiers, or instead "lifted" when necessary. Lifting = a CPS transform.
17. [Phil/ling application] Expletives
4. The basis of monads in category theory
5. Other interesting monads: reader monad, continuation monad
4. The basis of monads in category theory
5. Other interesting monads: reader monad, continuation monad
-6. [Phil/ling application] Monsters and context-shifting, e.g. Gillies/von Fintel on "ifs"
-7. Montague / Yoad Winter? (just have this written down in my notes, I assume Chris will remember the reference)
+6. [Phil/ling application] Monsters and context-shifting, e.g. Gillies/von Fintel on "ifs" [not sure which paper]
+7. Montague / Ben-avi and Winter, [A modular approach to intensionality](http://citeseerx.ist.psu.edu/viewdocsummary?doi=10.1.1.73.6927)
2. Using CPS to do other handy things, e.g., coroutines
3. Making evaluation order explicit with continuations (could also be done earlier, but I think will be helpful to do after we've encountered mutation)
2. Using CPS to do other handy things, e.g., coroutines
3. Making evaluation order explicit with continuations (could also be done earlier, but I think will be helpful to do after we've encountered mutation)
1. Basics of parallel programming: semaphores/mutexes
2. Contrasting "preemptive" parallelism to "cooperative" parallelism (coroutines, above)
3. Linear logic
1. Basics of parallel programming: semaphores/mutexes
2. Contrasting "preemptive" parallelism to "cooperative" parallelism (coroutines, above)
3. Linear logic