285 lines
6.5 KiB
TeX
285 lines
6.5 KiB
TeX
% Keep this before the document class to calculate stuff correctly
|
|
%\RequirePackage{mathpazo}\normalfont % \mathit{\kappa} doesn't work
|
|
\RequirePackage{charter}\normalfont
|
|
|
|
% draft: Short title page, exact date-time of build, extra
|
|
% footer with date
|
|
% final: official title page and footers
|
|
%
|
|
%\documentclass[12pt,draft,oldfontcommands]{memoir}
|
|
\documentclass[12pt,final,oldfontcommands]{memoir}
|
|
|
|
% Customization of memoir class to comply with dissertation guidelines
|
|
\RequirePackage{timestamp}
|
|
|
|
|
|
\RequirePackage[usenames,dvipsnames]{color}
|
|
\RequirePackage{dissertationfmt}
|
|
\RequirePackage[longnamesfirst]{natbib}
|
|
\RequirePackage{slatex}
|
|
\slatexseparateincludes
|
|
\RequirePackage{mathpartir}
|
|
\RequirePackage{dls-mmm}
|
|
\usepackage{ifthen}
|
|
%\usepackage[stable]{footmisc}
|
|
\RequirePackage{fancyvrb}
|
|
\RequirePackage{dls-macros}
|
|
\usepackage{amsmath}
|
|
\usepackage{amssymb}
|
|
|
|
\usepackage{ts}
|
|
\ifdraftdoc
|
|
\usepackage[pdftex,colorlinks=true,draft=false,linkcolor=black,citecolor=black,urlcolor=black]{hyperref}
|
|
\else
|
|
\usepackage[pdftex,colorlinks=true,draft=false,linkcolor=black,citecolor=black,urlcolor=black]{hyperref}
|
|
\fi
|
|
\usepackage[all]{hypcap}
|
|
\RequirePackage{memhfixc}
|
|
|
|
%\hyphenate{wrig-stad}
|
|
|
|
\newcommand{\cpp}{C++}
|
|
\newcommand{\csharp}{C\#}
|
|
|
|
\bibpunct{[}{]}{;}{a}{}{,}
|
|
|
|
\leftcodeskip=5pt %0pt plus 1fil
|
|
\rightcodeskip=1pt %% guarantees that no code blocks are broken across a
|
|
%% page -- need to do some shuffling for calculations
|
|
|
|
\defschememathescape{$} %$
|
|
|
|
\setspecialsymbol{HPmodule-begin}{\keywordfont{\#\%module-begin}}
|
|
\setspecialsymbol{HPtop-interaction}{\keywordfont{\#\%top-interaction}}
|
|
\setspecialsymbol{HPapp}{\keywordfont{\#\%app}}
|
|
\setspecialsymbol{HPdatum}{\keywordfont{\#\%datum}}
|
|
|
|
\setkeyword{module-begin top-interaction}
|
|
\setkeyword{define/contract contract all-defined-out for}
|
|
\setspecialsymbol{typeKW}{\keywordfont{type}}
|
|
\setspecialsymbol{<=}{$\Leftarrow$}
|
|
|
|
\setkeyword{require/typed pdefine: Listof require-typed-struct lib
|
|
int
|
|
planet Symbol Opaque require/opaque-type define-values values
|
|
All cases define-type Any Pair let-values let*
|
|
Char N B A S Path
|
|
-> Number String Boolean : define: define-type-alias define-struct
|
|
define-typed-struct module with-syntax syntax-case
|
|
define-struct: let*: Refinement R provide for-syntax require
|
|
rename-out except-out all-from-out define-for-syntax
|
|
begin-for-syntax match rename-in compiled-module define/contract
|
|
#%app #%module-begin #%top-interaction class unit
|
|
Integer inst}
|
|
\setspecialsymbol{lambda}{\ma{\lambda}}
|
|
\setspecialsymbol{lambda:}{\ma{\lambda}:}
|
|
\setspecialsymbol{l:}{\ma{\lambda}:}
|
|
\setspecialsymbol{hlang}{{\bf \#lang}}
|
|
\setspecialsymbol{langts}{{{\bf \#lang} typed-scheme}}
|
|
\setspecialsymbol{langs}{{\bf \#lang} scheme}
|
|
\setspecialsymbol{mu}{$\mu$}
|
|
\setspecialsymbol{string->number}{\mbox{\variablefont{string}$\rightarrow$\variablefont{number}}}
|
|
\setspecialsymbol{->}{$\rightarrow$}
|
|
\setspecialsymbol{U}{\ma{\bigcup}}
|
|
\setspecialsymbol{-U>}{\ma{\stackrel{\mbox{(\usym\ {\bf Number} {\bf Boolean})}}{\to}}}
|
|
\setspecialsymbol{bover}{\ma{\stackrel{b}{\to}}}
|
|
\setspecialsymbol{bot}{\ma{\bot}}
|
|
\setspecialsymbol{ELIDED}{\mbox{$\mbox{\tiny ~~{\it omitted\/}~~} \over ~$}}
|
|
\setspecialsymbol{dotsa}{$\dots_{\alpha}$}
|
|
\setspecialsymbol{dotsb}{$\dots_{\beta}$}
|
|
\setspecialsymbol{dotsc}{$\dots_{\gamma}$}
|
|
\setspecialsymbol{alpha}{$\alpha$}
|
|
\setspecialsymbol{beta}{$\beta$}
|
|
\setspecialsymbol{gamma}{$\gamma$}
|
|
\setspecialsymbol{sigma}{$\sigma$}
|
|
\setspecialsymbol{tau}{$\tau$}
|
|
\setspecialsymbol{All}{$\forall$}
|
|
\setvariable{rec}
|
|
|
|
\def\multiargs{false}
|
|
\def\paths{false}
|
|
\def\dologic{false}
|
|
|
|
\ifthenelse{\equal{\multiargs}{true}}{
|
|
\margtrue
|
|
}
|
|
{
|
|
\margfalse
|
|
}
|
|
|
|
\ifthenelse{\equal{\paths}{true}}{
|
|
\pathtrue
|
|
}
|
|
{
|
|
\pathfalse
|
|
}
|
|
|
|
\ifthenelse{\equal{\dologic}{true}}{
|
|
\logictrue
|
|
}
|
|
{
|
|
\logicfalse
|
|
}
|
|
|
|
|
|
|
|
|
|
% Enable svn keyword expansion
|
|
%\RequirePackage{svn-multi}
|
|
|
|
%%% Technical stuff
|
|
|
|
%\RequirePackage{amsthm} % for the proof environment
|
|
|
|
%%% Typography customizations
|
|
%\RequirePackage{afterpage} % for the \afterpage command
|
|
|
|
\setcounter{tocdepth}{1}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
\mdef\l{\lambda}
|
|
|
|
|
|
\title{Typed Scheme: \\ {\large \textrm{From Scripts to Programs}}}
|
|
\author{Sam Tobin-Hochstadt}
|
|
|
|
\makeindex
|
|
|
|
%\doublespacing
|
|
|
|
\begin{document}
|
|
|
|
|
|
%%% Front stuff
|
|
\frontmatter
|
|
|
|
% Cover page
|
|
\makeccsthesistitle
|
|
|
|
% Preface (abstract, acknowledgements)
|
|
\input{preface.tex}
|
|
|
|
% ToC, LoF, LoT, etc.
|
|
\cleardoublepage
|
|
\tableofcontents
|
|
\cleardoublepage
|
|
\listoffigures
|
|
%\listoftables
|
|
|
|
\newcounter{ex}
|
|
|
|
|
|
\newsavebox{\boxedtextbin}
|
|
\newenvironment{boxedtext}
|
|
{\begin{lrbox}{\boxedtextbin}
|
|
\begin{minipage}{0.95 \textwidth} }
|
|
{\end{minipage}\end{lrbox}
|
|
\begin{center}\fbox{\usebox{\boxedtextbin}}\end{center}}
|
|
|
|
\newbox\exbox
|
|
|
|
\newenvironment{exmp}{
|
|
\refstepcounter{ex}%
|
|
\begin{boxedtext}
|
|
\setbox\exbox=\vbox{\par\hfill\framebox{\small Example~\theex}}
|
|
\usebox\exbox
|
|
\vskip-1em
|
|
\vskip-\ht\exbox
|
|
\begin{SingleSpace*}}
|
|
{\end{SingleSpace*}
|
|
\end{boxedtext}}
|
|
|
|
\let\cite\citep
|
|
|
|
%%% Main document
|
|
\mainmatter
|
|
|
|
|
|
\input{intro.tex}
|
|
|
|
\chapter{Typed Scheme through Examples}
|
|
\label{chap:overview}
|
|
\input{informal}
|
|
\input{semiformal}
|
|
|
|
\chapter{Design Choices}
|
|
\label{chap:design}
|
|
\input{design}
|
|
|
|
\chapter{Prior Work}
|
|
\input{prior}
|
|
|
|
\chapter{Integrating Typed and Untyped Code}
|
|
\label{chap:integrate}
|
|
\input{integrate.tex}
|
|
|
|
\chapter{Occurrence Typing}
|
|
\label{chap:occur}
|
|
\input{occur}
|
|
|
|
\pathtrue
|
|
|
|
\chapter{Extensions to Occurrence Typing}
|
|
\label{chap:occur-extend}
|
|
\input{popl-formal2}
|
|
|
|
\logictrue
|
|
|
|
\input{popl-formal3}
|
|
\input{popl-formal4}
|
|
|
|
\chapter{Refinement Types}
|
|
\label{chap:refinement}
|
|
\input{mf-refinement}
|
|
\input{mf-extended-example}
|
|
|
|
\chapter[Variable-Arity Polymorphism]{Variable-Arity Polymorphism\footnote{This is joint work with T. Stephen Strickland~\cite{sthf:variable-arity}.}
|
|
}
|
|
\label{chap:dots}
|
|
{
|
|
\input{varar-intro}
|
|
\input{esop09/formal}
|
|
}
|
|
\chapter[Implementation]{Implementation\footnote{This is joint work
|
|
with Ryan Culpepper and Matthew Flatt~\cite{ctf:macros}.}}
|
|
\label{chap:impl}
|
|
\input{scheme-syntax}
|
|
\input{scheme-type-one}
|
|
\input{scheme-type-multi}
|
|
|
|
\chapter[Evaluation]{Evaluation\footnote{Many of the programs in this chapter were
|
|
originally ported to Typed Scheme by Ivan Gazeau.}}
|
|
\label{chap:exp}
|
|
\label{chap:eval}
|
|
\input{icse-exp}
|
|
|
|
\chapter{Related Work}
|
|
\label{chap:related}
|
|
\def\lateff{latent filter}
|
|
\def\lexeff{visible filter}
|
|
\def\subpred{sub-filter}
|
|
|
|
\input{related}
|
|
|
|
\chapter{Conclusion}
|
|
\label{chap:conclusion}
|
|
\input{conclusion}
|
|
|
|
%%% The bibliography
|
|
\bibliographystyle{plainnat}
|
|
%\bibliographystyle{plain}
|
|
\bibliography{new-popl}
|
|
|
|
|
|
%%% The appendix
|
|
%\appendix
|
|
|
|
|
|
%%% Back stuff
|
|
%\backmatter
|
|
|
|
|
|
\end{document}
|