mirror of
https://github.com/dhil/phd-dissertation
synced 2026-03-13 02:58:26 +00:00
Revisions
This commit is contained in:
27
thesis.tex
27
thesis.tex
@@ -207,7 +207,7 @@ callcc, J, catchcont, etc.
|
||||
|
||||
\part{Design}
|
||||
|
||||
\chapter{A ML-flavoured programming language based on rows}
|
||||
\chapter{An ML-flavoured programming language based on rows}
|
||||
\label{ch:base-language}
|
||||
|
||||
In this chapter we introduce a core calculus, \BCalc{}, which we shall
|
||||
@@ -218,11 +218,11 @@ multi-tier web-programming language
|
||||
\Links{}~\cite{CooperLWY06}. \Links{} belongs to the
|
||||
ML-family~\cite{MilnerTHM97} of programming languages as it features
|
||||
typical characteristics of ML languages such as a static type system
|
||||
supporting parametric polymorphism with type inference support (in
|
||||
fact Links supports first-class polymorphism), 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
|
||||
supporting parametric polymorphism with type inference (in fact Links
|
||||
supports first-class polymorphism), 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.
|
||||
|
||||
@@ -247,9 +247,9 @@ and programming with computational effects.
|
||||
\section{Syntax and static semantics}
|
||||
\label{sec:syntax-base-language}
|
||||
|
||||
In \BCalc{}, types are precursory to terms, as it is intrinsically
|
||||
typed. Thus we begin by presenting the syntax of its kind and type
|
||||
structure in Section~\ref{sec:base-language-types}. Subsequently in
|
||||
As \BCalc{} is intrinsically typed, we begin by presenting the syntax
|
||||
of kinds and types in
|
||||
Section~\ref{sec:base-language-types}. Subsequently in
|
||||
Section~\ref{sec:base-language-terms} we present the term syntax,
|
||||
before presenting the formation rules for types in
|
||||
Section~\ref{sec:base-language-type-rules}.
|
||||
@@ -449,10 +449,11 @@ $\cdot$ for closed rows.
|
||||
%
|
||||
|
||||
\paragraph{Kinds}
|
||||
The kinds comprise $\Type$ for regular type variables, $\Presence$ for
|
||||
presence variables, $\Comp$ for computation type variables, $\Effect$
|
||||
for effect variables, and lastly $\Row_{\mathcal{L}}$ for row
|
||||
variables.
|
||||
The kinds classify the different categories of types. The $\Type$ kind
|
||||
classifies for value types, $\Presence$ classifies presence
|
||||
annotations, $\Comp$ classifies computation types, $\Effect$
|
||||
classifies effect types, and lastly $\Row_{\mathcal{L}}$ classifies
|
||||
rows.
|
||||
%
|
||||
The formation rules for kinds are given in
|
||||
Figure~\ref{fig:base-language-kinding}. The kinding judgement
|
||||
|
||||
Reference in New Issue
Block a user