diff --git a/thesis.bib b/thesis.bib index b234f12..023be96 100644 --- a/thesis.bib +++ b/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} +} diff --git a/thesis.tex b/thesis.tex index 0b9fe68..72df048 100644 --- a/thesis.tex +++ b/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