Daniel Hillerström 5 years ago
parent
commit
e46cd37b01
  1. 62
      thesis.bib
  2. 41
      thesis.tex

62
thesis.bib

@ -1413,6 +1413,13 @@
year = {2010}
}
@book{Dybvig03,
author = {R. Kent Dybvig},
title = {The {Scheme} Programming Language, Third Edition},
publisher = {{MIT} Press},
year = {2003}
}
# Haskell
@misc{JonesABBBFHHHHJJLMPRRW99,
author = {Simon Peyton Jones
@ -3267,3 +3274,58 @@
pages = {1--32},
year = {2003}
}
# Undelimited control is insufficient to express mutable state
@techreport{FriedmanS00,
author = {Daniel P. Friedman and Amr Sabry},
title = {Recursion is a Computational Effect},
institution = {Computer Science Department, Indiana University},
address = {Bloomington, Indiana 47405, USA},
type = {Technical report},
number = {546},
year = {200},
}
# Fortran
@inproceedings{BackusBBGHHNSSS57,
author = {John W. Backus and
Robert J. Beeber and
Sheldon Best and
Richard Goldberg and
Lois M. Haibt and
Harlan L. Herrick and
Robert A. Nelson and
David Sayre and
Peter B. Sheridan and
H. Stern and
Irving Ziller and
Robert A. Hughes and
R. Nutt},
title = {The {FORTRAN} automatic coding system},
booktitle = {{IRE-AIEE-ACM} Computer Conference (Western)},
pages = {188--198},
publisher = {{ACM}},
year = {1957}
}
# Algol
@article{BackusBGKMPRSVWWW60,
author = {John W. Backus and
Friedrich L. Bauer and
Julien Green and
C. Katz and
John McCarthy and
Alan J. Perlis and
Heinz Rutishauser and
Klaus Samelson and
Bernard Vauquois and
Joseph Henry Wegstein and
Adriaan van Wijngaarden and
Michael Woodger},
title = {Report on the algorithmic language {ALGOL} 60},
journal = {Commun. {ACM}},
volume = {3},
number = {5},
pages = {299--314},
year = {1960}
}

41
thesis.tex

@ -435,14 +435,45 @@ effectful programming through the lens of a singular effect, namely,
global mutable state.
\subsection{Early days of direct-style}
It is well-known that $\Callcc$ exhibits both time and space
performance problems for various implementing various
effects~\cite{Kiselyov12}.
%
Programming in its infancy was effectful as the idea of first-class
control was conceived already during the design of the programming
language Algol~\cite{BackusBGKMPRSVWWW60} -- one of the early
high-level programming languages along with
Fortran~\cite{BackusBBGHHNSSS57} and Lisp~\cite{McCarthy60} -- when
\citet{Landin98} sought to model unrestricted goto-style jumps using
an extended $\lambda$-calculus. The nature of \citeauthor{Landin98}'s
control facility is undelimited; its power was recognised early by
\citet{Burstall69}, who used it to implement a thread scheduler.
%
\citeauthor{Landin98}'s control facility did not gain popularity as a
practical programming abstraction~\cite{Felleisen87b}.
%
% The power of \citeauthor{Landin98}'s control facility was recognised early The nature of the first-class control introduced by
% \citeauthor{Landin98} was undelimited. However,
% The early high-level programming languages
% Fortran~\cite{BackusBBGHHNSSS57}, Algol~\cite{BackusBGKMPRSVWWW60},
% and Lisp~\cite{McCarthy60} all hard-wire a particular set of effects
% into their semantics. The usage of effects in these languages is
% completely untracked, although, the languages belonging to the Lisp
% family have adopted a naming convention to suffix names of
% side-effecting operations with exclamation points, e.g. the state
% modification operation is named $\keyw{set!}$~\cite{Dybvig03}.
% The idea of undelimited first-class control was conceived during the
% development of Algol~\cite{Landin65,Landin65a,Landin98}. The probably
% most famous form of undelimited control, $\Callcc$, appeared
% later~\cite{AbelsonHAKBOBPCRFRHSHW85}.
% It is well-known that $\Callcc$ exhibits both time and space
% performance problems for various implementing various
% effects~\cite{Kiselyov12}.
%
\subsubsection{Builtin mutable state}
It is common to find mutable state builtin into the semantics of
mainstream programming language. However, different languages vary in
mainstream programming languages. However, different languages vary in
their approach to mutable state. For instance, state mutation
underpins the foundations of imperative programming languages
belonging to the C family of languages. They do typically not

Loading…
Cancel
Save