Browse Source

Draft introdoctury bit

master
Daniel Hillerström 5 years ago
parent
commit
d9717b7434
  1. 57
      thesis.bib
  2. 121
      thesis.tex

57
thesis.bib

@ -1,22 +1,22 @@
# Daniel's master's thesis (initial implementation of handlers in Links)
# My MSc thesis (initial implementation of handlers in Links)
@MastersThesis{Hillerstrom15, @MastersThesis{Hillerstrom15,
author = {Daniel Hillerström},
title = {Handlers for Algebraic Effects in {Links}},
school = {School of Informatics, The University of Edinburgh},
address = {Scotland, {UK}},
month = aug,
year = 2015
author = {Daniel Hillerström},
title = {Handlers for Algebraic Effects in {Links}},
school = {School of Informatics, The University of Edinburgh},
address = {Scotland, {UK}},
month = aug,
year = 2015
} }
# Daniel's master's thesis (abstract message-passing concurrency model, compilation of handlers)
# My MSc(R) thesis (abstract message-passing concurrency model, compilation of handlers)
@MastersThesis{Hillerstrom16, @MastersThesis{Hillerstrom16,
author = {Daniel Hillerström},
title = {Compilation of Effect Handlers and their Applications in Concurrency},
school = {School of Informatics, The University of Edinburgh},
address = {Scotland, {UK}},
optmonth = aug,
year = 2016,
type = {{MSc(R)} thesis}
author = {Daniel Hillerström},
title = {Compilation of Effect Handlers and their Applications in Concurrency},
school = {School of Informatics, The University of Edinburgh},
address = {Scotland, {UK}},
optmonth = aug,
year = 2016,
type = {{MSc(R)} thesis}
} }
# OCaml handlers # OCaml handlers
@ -34,16 +34,17 @@
} }
@misc{DolanWSYM15, @misc{DolanWSYM15,
title = {Effective Concurrency through Algebraic Effects},
author = {Stephen Dolan and Leo White and {KC} Sivaramakrishnan and Jeremy Yallop and Anil Madhavapeddy},
year = 2015,
title = {Effective Concurrency through Algebraic Effects},
author = {Stephen Dolan and Leo White and {KC} Sivaramakrishnan
and Jeremy Yallop and Anil Madhavapeddy},
year = 2015,
howpublished = {{OCaml} Workshop} howpublished = {{OCaml} Workshop}
} }
@misc{DolanWM14, @misc{DolanWM14,
title = {Multicore {OCaml}},
author = {Stephen Dolan and Leo White and Anil Madhavapeddy},
year = {2014},
title = {Multicore {OCaml}},
author = {Stephen Dolan and Leo White and Anil Madhavapeddy},
year = {2014},
howpublished = {{OCaml} Workshop} howpublished = {{OCaml} Workshop}
} }
@ -1226,9 +1227,6 @@
OPTbibsource = {dblp computer science bibliography, http://dblp.org} OPTbibsource = {dblp computer science bibliography, http://dblp.org}
} }
@article{Hughes00, @article{Hughes00,
author = {John Hughes}, author = {John Hughes},
title = {Generalising monads to arrows}, title = {Generalising monads to arrows},
@ -3555,3 +3553,14 @@
editor = {Haskell Curry and Hindley B. and Seldin J. Roger and P. Jonathan}, editor = {Haskell Curry and Hindley B. and Seldin J. Roger and P. Jonathan},
year = 1980 year = 1980
} }
# Criteria for modular programming
@article{Parnas72,
author = {David Lorge Parnas},
title = {On the Criteria To Be Used in Decomposing Systems into Modules},
journal = {Commun. {ACM}},
volume = {15},
number = {12},
pages = {1053--1058},
year = {1972}
}

121
thesis.tex

@ -371,30 +371,73 @@
\chapter{Introduction} \chapter{Introduction}
\label{ch:introduction} \label{ch:introduction}
% %
Functional programmers tend to view programs as impenetrable opaque
boxes, whose outputs are determined entirely by their
inputs~\cite{Hughes89,Howard80}. This is a compelling view which
admits a canonical mathematical model of
computation~\cite{Church32,Church41}.
%
Alas, this view does not capture the reality of practical programs,
which perform operations to interact with their ambient environment to
for example signal graceful or erroneous termination, manipulate the
file system, fork a new thread, and so forth, all of which may have an
observable effect on the program state. Interactions with the
environment are mediated by some local authority (e.g. operating
system), which confers the meaning of operations~\cite{CartwrightF94}.
%
This suggests a view of programs as translucent boxes, which convey
their internal use of operations used to compute their outputs.
This view underpins the \emph{effectful programming paradigm} in which
computational effects constitute an integral part of programs. In
effectful programming a computational effect is understood as a
collection of operations, e.g. exceptions are an effect with a single
operation \emph{raise}, mutable state is an effect with two operations
\emph{get} and \emph{put}, concurrency is an effect with two
operations \emph{fork} and \emph{yield}, etc~\cite{Moggi91,PlotkinP01}.
% Programmers tend to view programs as impenetrable opaque boxes, whose
% outputs are determined entirely by their
% inputs~\cite{Hughes89,Howard80}. This is a compelling view which
% admits a canonical mathematical model of
% computation~\cite{Church32,Church41}.
% %
% Alas, this view does not capture the reality of practical programs,
% which perform operations to interact with their ambient environment to
% for example signal graceful or erroneous termination, manipulate the
% file system, fork a new thread, and so forth, all of which may have an
% observable effect on the program state. Interactions with the
% environment are mediated by some local authority (e.g. operating
% system), which confers the meaning of operations~\cite{CartwrightF94}.
% %
% This suggests a view of programs as translucent boxes, which convey
% their internal use of operations used to compute their outputs.
% This view underpins the \emph{effectful programming paradigm} in which
% computational effects constitute an integral part of programs. In
% effectful programming a computational effect is understood as a
% collection of operations, e.g. exceptions are an effect with a single
% operation \emph{raise}, mutable state is an effect with two operations
% \emph{get} and \emph{put}, concurrency is an effect with two
% operations \emph{fork} and \emph{yield}, etc~\cite{Moggi91,PlotkinP01}.
\citeauthor{PlotkinP09}'s \emph{effect handlers} provide a promising
modular basis for effectful
programming~\cite{PlotkinP09,PlotkinP13,KammarLO13}. The basic tenet
of programming with effect handlers is that programs are written with
respect to an interface of effectful operations they expect to be
offered by their environment.
%
An effect handler is an environment that implements an effect
interface.
%
Programs can run under any effect handler whose implementation
conforms to the expected effect interface.
%
In this regard, the \emph{doing} and \emph{being} of effects are kept
separate~\cite{JonesW93,LindleyMM17}, which is a necessary condition
for modular abstraction~\cite{Parnas72}.
%
A key property of effect handlers is that they provide modular
instantiation of effect interfaces through seamless composition,
meaning the programmer can compose any number of complementary
handlers to obtain a full implementation of some
interface~\cite{HillerstromL16}.
%
The ability to seamless compose handlers gives to a programming
paradigm which we shall call \emph{effect handler oriented
programming} in which the meaning of effectful programs may be
decomposed into a collection of fine-grained effect handlers.
The key enabler for seamless composition is \emph{first-class
control}, which provides a facility for reifying the program control
state as a first-class data object known as a
continuation~\cite{FriedmanHK84}.
%
Through structured manipulation of continuations control gets
transferred between programs and their handlers.
In this dissertation I present a practical design for programming
languages with support for effect handler oriented programming, I
develop two foundational implementation techniques for effect
handlers, and I study their inherent computational expressiveness and
efficiency.
% Alas, this view does not capture the reality of practical programs, which % Alas, this view does not capture the reality of practical programs, which
% may use a variety of observable computational effects such as % may use a variety of observable computational effects such as
@ -417,20 +460,20 @@ operations \emph{fork} and \emph{yield}, etc~\cite{Moggi91,PlotkinP01}.
% Practical programming is inherently effectfulPractical programming involves programming with \emph{computational % Practical programming is inherently effectfulPractical programming involves programming with \emph{computational
% effects}, or simply effects. % effects}, or simply effects.
Functional programming offers two distinct, but related, approaches to
effectful programming, which \citet{Filinski96} succinctly
characterises as \emph{effects as data} and \emph{effects as
behaviour}. The former uses monads to encapsulate
effects~\cite{Moggi91,Wadler92} which is compelling because it
recovers some of benefits of the opaque box view for effectful
programs, though, at the expense of a change of programming
style~\cite{JonesW93}. The latter retains the usual direct style of
programming by way of \emph{first-class control}, which is a powerful
facility that can simulate any computational
effect~\cite{Filinski94,Filinski96}.
\citeauthor{PlotkinP09}'s \emph{effect handlers} are a recent
innovation\dots
% Functional programming offers two distinct, but related, approaches to
% effectful programming, which \citet{Filinski96} succinctly
% characterises as \emph{effects as data} and \emph{effects as
% behaviour}. The former uses monads to encapsulate
% effects~\cite{Moggi91,Wadler92} which is compelling because it
% recovers some of benefits of the opaque box view for effectful
% programs, though, at the expense of a change of programming
% style~\cite{JonesW93}. The latter retains the usual direct style of
% programming by way of \emph{first-class control}, which is a powerful
% facility that can simulate any computational
% effect~\cite{Filinski94,Filinski96}.
% \citeauthor{PlotkinP09}'s \emph{effect handlers} are a recent
% innovation\dots
% First-class control enables the programmer to reify and manipulate the % First-class control enables the programmer to reify and manipulate the
% control state as a first-class data object known as a % control state as a first-class data object known as a
@ -443,8 +486,6 @@ innovation\dots
% ability can significantly improve the computational expressiveness and % ability can significantly improve the computational expressiveness and
% efficiency of programming languages~\cite{LongleyN15,HillerstromLL20}. % efficiency of programming languages~\cite{LongleyN15,HillerstromLL20}.
effect handlers, a recent innovation,
%\citet{Sabry98} %\citet{Sabry98}
% Virtually every useful program performs some computational effects % Virtually every useful program performs some computational effects
% such as exceptions, state, concurrency, nondeterminism, interactive % such as exceptions, state, concurrency, nondeterminism, interactive

Loading…
Cancel
Save