mirror of
https://github.com/dhil/phd-dissertation
synced 2026-03-12 18:48:25 +00:00
Progress.
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
%% Calculi names.
|
%% Calculi names.
|
||||||
%%
|
%%
|
||||||
\newcommand{\Links}{Links\xspace}
|
\newcommand{\Links}{Links\xspace}
|
||||||
|
\newcommand{\CoreLinks}{\ensuremath{\mathsf{CoreLinks}}\xspace}
|
||||||
\newcommand{\BCalc}{\ensuremath{\lambda_{\mathsf{b}}}\xspace}
|
\newcommand{\BCalc}{\ensuremath{\lambda_{\mathsf{b}}}\xspace}
|
||||||
\newcommand{\BCalcRec}{\ensuremath{\lambda_{\mathsf{b}+\mathsf{rec}}}\xspace}
|
\newcommand{\BCalcRec}{\ensuremath{\lambda_{\mathsf{b}+\mathsf{rec}}}\xspace}
|
||||||
|
|
||||||
@@ -74,3 +75,7 @@
|
|||||||
\newcommand{\hops}{H^{\mathrm{ops}}}
|
\newcommand{\hops}{H^{\mathrm{ops}}}
|
||||||
%\newcommand{\hex}{H^{\mathrm{ex}}}
|
%\newcommand{\hex}{H^{\mathrm{ex}}}
|
||||||
\newcommand{\hell}{H^{\ell}}
|
\newcommand{\hell}{H^{\ell}}
|
||||||
|
|
||||||
|
\newcommand{\alertbox}[2]{{\par\noindent\small\color{red} \framebox{\parbox{\dimexpr\linewidth-2\fboxsep-2\fboxrule}{\textbf{#1:} #2}}}}
|
||||||
|
\newcommand{\todo}[1]{\alertbox{TODO}{#1}}
|
||||||
|
\newcommand{\dhil}[1]{\alertbox{Daniel}{#1}}
|
||||||
10
thesis.bib
10
thesis.bib
@@ -726,3 +726,13 @@
|
|||||||
pages = {29:1--29:29},
|
pages = {29:1--29:29},
|
||||||
year = {2017}
|
year = {2017}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# SML
|
||||||
|
@book{MilnerTHM97,
|
||||||
|
author = {Robin Milner and Mads Tofte and Robert Harper and David Macqueen},
|
||||||
|
title = {The Definition of {Standard} {ML}},
|
||||||
|
year = {1997},
|
||||||
|
isbn = {0262631814},
|
||||||
|
publisher = {MIT Press},
|
||||||
|
address = {Cambridge, MA, USA},
|
||||||
|
}
|
||||||
48
thesis.tex
48
thesis.tex
@@ -187,20 +187,52 @@ callcc, J, catchcont, etc.
|
|||||||
\chapter{A ML-flavoured programming language}
|
\chapter{A ML-flavoured programming language}
|
||||||
\label{ch:base-language}
|
\label{ch:base-language}
|
||||||
|
|
||||||
In this chapter we introduce a core calculus, $\BCalc$, which we shall
|
In this chapter we introduce a core calculus, \BCalc{}, which we shall
|
||||||
later use as the basis for exploration of design considerations for
|
later use as the basis for exploration of design considerations for
|
||||||
effect handlers. This calculus distils the `functional' essence of the
|
effect handlers. This calculus is based on \CoreLinks{} by
|
||||||
ML-flavoured multi-tier web-programming language
|
\citet{LindleyC12}, which distils the essence of the functional
|
||||||
\Links~\cite{CooperLWY06}. As such $\BCalc$ may be regarded as a
|
multi-tier web-programming language
|
||||||
faithful model of a prototypical and practical functional programming
|
\Links{}~\cite{CooperLWY06}. \Links{} belongs to the
|
||||||
language.
|
ML-family~\cite{MilnerTHM97} of programming languages as it features
|
||||||
|
typical characteristics of ML languages such as a static type system
|
||||||
|
supporting parametric polymorphism and type inference, and its
|
||||||
|
evaluation semantics is strict. However, \Links{} differentiates
|
||||||
|
itself from the rest of the ML-family by making crucial use of
|
||||||
|
\emph{row polymorphism} to support extensible records, variants, and
|
||||||
|
tracking of computational effects. Thus \Links{} has a rather strong
|
||||||
|
emphasis on structural types rather than nominal types.
|
||||||
|
|
||||||
|
\CoreLinks{} captures all of these properties of \Links{}. Our
|
||||||
|
calculus \BCalc{} differs in several aspects from \CoreLinks{}. For
|
||||||
|
example, the underlying formalism of \CoreLinks{} is call-by-value,
|
||||||
|
whilst the formalism of \BCalc{} is \emph{fine-grain
|
||||||
|
call-by-value}~\cite{LevyPT03}, which shares similarities with
|
||||||
|
A-normal form (ANF)~\cite{FlanaganSDF93} as it syntactically
|
||||||
|
distinguishes between value and computation terms by mandating every
|
||||||
|
intermediate computation being named. However unlike ANF, fine-grain
|
||||||
|
call-by-value remains closed under $\beta$-reduction. The reason for
|
||||||
|
choosing fine-grain call-by-value as our formalism is entirely due to
|
||||||
|
convenience. As we shall see in Chapter~\ref{ch:unary-handlers}
|
||||||
|
fine-grain call-by-value is a convenient formalism for working with
|
||||||
|
continuations. Another point of difference between \CoreLinks{} and
|
||||||
|
\BCalc{} is that the former models the integrated database query
|
||||||
|
sublanguage of \Links{}. We discard the query sublanguage altogether,
|
||||||
|
and instead focus entirely on the interaction with computational
|
||||||
|
effects.
|
||||||
|
|
||||||
\section{Syntax and static semantics}
|
\section{Syntax and static semantics}
|
||||||
\section{Type inference}
|
\label{sec:syntax-base-language}
|
||||||
|
|
||||||
|
\section{Type and effect inference}
|
||||||
|
\dhil{While I would like to detail the type and effect inference, it
|
||||||
|
may not be worth the effort. The reason I would like to do this goes
|
||||||
|
back to 2016 when Richard Eisenberg asked me about how we do effect
|
||||||
|
inference in Links.}
|
||||||
|
|
||||||
\section{Dynamic semantics}
|
\section{Dynamic semantics}
|
||||||
|
|
||||||
\chapter{Unary handlers}
|
\chapter{Unary handlers}
|
||||||
\label{ch:deep-handlers}
|
\label{ch:unary-handlers}
|
||||||
|
|
||||||
\section{Deep handlers}
|
\section{Deep handlers}
|
||||||
\subsection{Syntax and static semantics}
|
\subsection{Syntax and static semantics}
|
||||||
|
|||||||
Reference in New Issue
Block a user