mirror of
https://github.com/dhil/phd-dissertation
synced 2026-03-13 02:58:26 +00:00
Chapter 8
This commit is contained in:
41
thesis.tex
41
thesis.tex
@@ -16522,6 +16522,24 @@ asymptotic improvement in runtime performance for some class of
|
|||||||
programs.
|
programs.
|
||||||
|
|
||||||
\section{Programming with effect handlers}
|
\section{Programming with effect handlers}
|
||||||
|
Chapter~\ref{ch:ehop} presents a case study of effect handler oriented
|
||||||
|
programming, which reproduces the essence of the \UNIX{} operating
|
||||||
|
system by making crucial use of effect handlers. The case study
|
||||||
|
demonstrates how effect handlers provide a high-degree of modularity
|
||||||
|
and flexibility that enable substantial behavioural changes to be
|
||||||
|
retrofitted onto programs without altering the existing the code. Thus
|
||||||
|
effect handlers provide a mechanism for building small task-oriented
|
||||||
|
programs that later can be scaled to interact with other programs in a
|
||||||
|
larger context.
|
||||||
|
%
|
||||||
|
The case study also demonstrates how one might ascribe a handler
|
||||||
|
semantics to a \UNIX{}-like operating system. The resulting operating
|
||||||
|
system \OSname{} captures the essential features of a true operating
|
||||||
|
system including support for managing multiple concurrent user
|
||||||
|
environments simultaneously, process parallelism, file I/O. The case
|
||||||
|
study also shows how each feature can be implemented in terms of some
|
||||||
|
standard effect.
|
||||||
|
|
||||||
Chapter~\ref{ch:handler-calculi} presents the design of a core
|
Chapter~\ref{ch:handler-calculi} presents the design of a core
|
||||||
calculus that forms the basis for Links, which is a practical
|
calculus that forms the basis for Links, which is a practical
|
||||||
programming language with deep, shallow, and parameterised effect
|
programming language with deep, shallow, and parameterised effect
|
||||||
@@ -16546,9 +16564,9 @@ two functions may introduce arbitrary effects that need to be handled
|
|||||||
accordingly. Alternatively, a composition of any two functions may
|
accordingly. Alternatively, a composition of any two functions may
|
||||||
inadvertently eliminate arbitrary effects, and as such, programming
|
inadvertently eliminate arbitrary effects, and as such, programming
|
||||||
with effect handlers without an effect system is prone to error. The
|
with effect handlers without an effect system is prone to error. The
|
||||||
\UNIX{} case study in Chapter~\ref{ch:ehop} demonstrates how
|
\UNIX{} case study in Chapter~\ref{ch:ehop} demonstrates how the
|
||||||
the effect system assists to ensure that effectful function
|
effect system assists to ensure that effectful function compositions
|
||||||
compositions are meaningful.
|
are meaningful.
|
||||||
|
|
||||||
The particular effect system that I have used throughout this
|
The particular effect system that I have used throughout this
|
||||||
dissertation is based on \citeauthor{Remy93}-style row polymorphism
|
dissertation is based on \citeauthor{Remy93}-style row polymorphism
|
||||||
@@ -16581,23 +16599,10 @@ $\dec{map}$ do not duplicate information. Rather than back-patching
|
|||||||
the effect system in hindsight, a possibly better approach is to
|
the effect system in hindsight, a possibly better approach is to
|
||||||
design the effect system for practical programming from the ground up
|
design the effect system for practical programming from the ground up
|
||||||
as \citet{LindleyMM17} did for the Frank programming language.
|
as \citet{LindleyMM17} did for the Frank programming language.
|
||||||
|
%
|
||||||
Nevertheless, the \UNIX{} case study is indicative of the syntactic
|
Nevertheless, the \UNIX{} case study is indicative of the syntactic
|
||||||
sugar being adequate in practice to build larger effect-oriented
|
sugar being adequate in practice to build larger effect-oriented
|
||||||
applications. The case study demonstrates how effect handlers provide
|
applications.
|
||||||
a high-degree of modularity and flexibility that enable substantial
|
|
||||||
behavioural changes to be retrofitted onto programs without altering
|
|
||||||
the existing the code. Thus effect handlers provide a mechanism for
|
|
||||||
building small task-oriented programs that later can be scaled to
|
|
||||||
interact with other programs in a larger context.
|
|
||||||
%
|
|
||||||
The case study also demonstrates how one might ascribe a handler
|
|
||||||
semantics to a \UNIX{}-like operating system. The resulting operating
|
|
||||||
system \OSname{} captures the essential features of a true operating
|
|
||||||
system including support for managing multiple concurrent user
|
|
||||||
environments simultaneously, process parallelism, file I/O. The case
|
|
||||||
study also shows how each feature can be implemented in terms of some
|
|
||||||
standard effect.
|
|
||||||
|
|
||||||
\subsection{Future work}
|
\subsection{Future work}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user