diff --git a/README.md b/README.md index 7ec237d..859b9b5 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,13 @@ # Foundations for programming and implementing effect handlers -**NOTE** I have made a draft copy of the dissertation available in -this repository. I ask that you **do not** link to or distribute the -draft anywhere, because I will delete the file once the final revision -has been submitted after the viva. I will make the final revision -publicly available at a stable link. +A copy of my dissertation can be [downloaded via my +website](https://dhil.net/research/papers/thesis.pdf). ---- +---- -Submitted May 30, 2021. Viva August 13, 2021. +Submitted on May 30, 2021. Examined on August 13, 2021. -The board of examiners consists of +The board of examiners were * [Andrew Kennedy](https://github.com/andrewjkennedy) (Facebook London) * [Edwin Brady](https://www.type-driven.org.uk/edwinb/) (University of St Andrews) @@ -30,77 +27,76 @@ The dissertation is structured as follows. and contributions of the dissertation, and discusses some related work. -### Background - - * Chapter 2 defines some basic mathematical notation and -constructions that are they pervasively throughout this dissertation. - - * Chapter 3 presents a literature survey of continuations and -first-class control. I classify continuations according to their -operational behaviour and provide an overview of the various -first-class sequential control operators that appear in the -literature. The application spectrum of continuations is discussed as -well as implementation strategies for first-class control. - ### Programming - * Chapter 4 introduces a polymorphic fine-grain call-by-value core -calculus, λb, which makes key use of Remy-style row polymorphism -to implement polymorphic variants, structural records, and a -structural effect system. The calculus distils the essence of the core -of the Links programming language. - - * Chapter 5 presents three extensions of λb, -which are λh that adds deep handlers, λ that adds shallow -handlers, and λ that adds parameterised handlers. The chapter -also contains a running case study that demonstrates effect handler -oriented programming in practice by implementing a small operating -system dubbed Tiny UNIX based on Ritchie and Thompson's original -UNIX. + * Chapter 2 illustrates effect handler oriented programming by + example by implementing a small operating system dubbed Tiny UNIX, + which captures some essential traits of Ritchie and Thompson's + UNIX. The implementation starts with a basic notion of file i/o, + and then, it evolves into a feature-rich operating system with full + file i/o, multiple user environments, multi-tasking, and more, by + composing ever more effect handlers. + + * Chapter 3 introduces a polymorphic fine-grain call-by-value core + calculus, λb, which makes key use of Rémy-style row + polymorphism to implement polymorphic variants, structural records, + and a structural effect system. The calculus distils the essence of + the core of the Links programming language. The chapter also + presents three extensions of λb, which are λh + that adds deep handlers, λ that adds shallow handlers, + and λ that adds parameterised handlers. ### Implementation - * Chapter 6 develops a higher-order continuation passing -style translation for effect handlers through a series of step-wise -refinements of an initial standard continuation passing style -translation for λb. Each refinement slightly modifies the notion -of continuation employed by the translation. The development -ultimately leads to the key invention of generalised continuation, -which is used to give a continuation passing style semantics to deep, -shallow, and parameterised handlers. - - * Chapter 7 demonstrates an application of generalised continuations -to abstract machine as we plug generalised continuations into -Felleisen and Friedman's CEK machine to obtain an adequate abstract -runtime with simultaneous support for deep, shallow, and parameterised -handlers. + * Chapter 4 develops a higher-order continuation passing style + translation for effect handlers through a series of step-wise + refinements of an initial standard continuation passing style + translation for λb. Each refinement slightly modifies + the notion of continuation employed by the translation. The + development ultimately leads to the key invention of generalised + continuation, which is used to give a continuation passing style + semantics to deep, shallow, and parameterised handlers. + + * Chapter 5 demonstrates an application of generalised continuations + to abstract machine as we plug generalised continuations into + Felleisen and Friedman's CEK machine to obtain an adequate abstract + runtime with simultaneous support for deep, shallow, and + parameterised handlers. ### Expressiveness - * Chapter 8 shows that deep, shallow, and parameterised notions of -handlers can simulate one another up to specific notions of -administrative reduction. - - * Chapter 9 studies the fundamental efficiency of effect handlers. In -this chapter, we show that effect handlers enable an asymptotic -improvement in runtime complexity for a certain class of -functions. Specifically, we consider the *generic count* problem using -a pure PCF-like base language λb (a simply typed variation of -λb) and its extension with effect handlers λh. We -show that λh admits an asymptotically more efficient -implementation of generic count than any λb implementation. + + * Chapter 6 shows that deep, shallow, and parameterised notions of + handlers can simulate one another up to specific notions of + administrative reduction. + + * Chapter 7 studies the fundamental efficiency of effect handlers. In + this chapter, we show that effect handlers enable an asymptotic + improvement in runtime complexity for a certain class of + functions. Specifically, we consider the *generic count* problem + using a pure PCF-like base language λb (a + simply typed variation of λb) and its extension with + effect handlers λh. We show that + λh admits an asymptotically more efficient + implementation of generic count than any λb + implementation. ### Conclusions - * Chapter 10 concludes and discusses future work. + * Chapter 8 concludes and discusses future work. ### Appendices - * Appendix A contains a proof that shows the `Get-get` equation for - state is redundant. - * Appendix B contains the proof details for the higher-order - uncurried CPS translation for deep and shallow handlers. - * Appendix C contains the proof details and gadgetry for the - complexity of the effectful generic count program. - * Appendix D provides a sample implementation of the Berger count - program and discusses it in more detail. + + * Appendix A contains a literature survey of continuations and + first-class control. I classify continuations according to their + operational behaviour and provide an overview of the various + first-class sequential control operators that appear in the + literature. The application spectrum of continuations is discussed + as well as implementation strategies for first-class control. + * Appendix B contains a proof that shows the `Get-get` equation for + state is redundant. + * Appendix C contains the proof details and gadgetry for the + complexity of the effectful generic count program. + * Appendix D provides a sample implementation of the Berger count + program and discusses it in more detail. ## Building @@ -114,3 +110,10 @@ e.g. $ make ``` +## Timeline + +I submitted my thesis on May 30, 2021. It was examined on August 13, +2021, where I received pass with minor corrections. The revised thesis +was submitted on December 22, 2021. It was approved on March +14, 2022. The final revision was submitted on March 23, 2022. I +received my PhD award letter on March 24, 2022. diff --git a/thesis-draft.tar.gz b/thesis-draft.tar.gz deleted file mode 100644 index 0e569b7..0000000 Binary files a/thesis-draft.tar.gz and /dev/null differ