
\documentclass[preprint]{sigplanconf}
\usepackage{pdf14}
\usepackage{version}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{mathptmx}
\usepackage{alltt}
\usepackage{url}
\usepackage{float}
% \usepackage{hyperref}
\usepackage{style/utils}
\usepackage{style/proof}
\usepackage{style/code}

% -----------------------------------------------------------------------------
\begin{document}

\title  {Capabilities and Coeffects}

\authorinfo
{       Ben Lippmeier   }
{ \shortstack
  {     Computer Science and Engineering \\
        University of New South Wales, Australia \\[2pt]
        \textsf{benl@cse.unsw.edu.au}
  }
}

\maketitle
\makeatactive

% -----------------------------------------------------------------------------
\begin{abstract}
Array programs in monadic functional languages need to destructively initialize mutable arrays, and then treat them as immutable from that point onwards. Although the \emph{effects} of the initialization can be safely encapsulated in a monad such as ST, mutable and immutable arrays are typically represented by different types, and unsafe coercions are used to convert between the two. We present a compiler intermediate language that allows such programs to be written safely, managing information about mutability, as well as effects, directly in the type system. 
\end{abstract}

\category
        {D.3.3}
        {Programming Languages}
        {Language Constructs and Features---Concurrent programming structures; Control structures; Abstract data types}

\keywords
        Arrays; Fusion; Haskell


% -----------------------------------------------------------------------------
\input{section/01-Introduction}
\input{section/02-Statics}
\input{section/03-Dynamics}
\input{section/04-Properties}
\input{section/05-Related}
\input{section/06-Conclusion}


\clearpage{}
% -----------------------------------------------------------------------------
\paragraph{Acknowledgements}
Thanks for Phil Wadler for the connection with Andrzej Filinski's work.

\bibliographystyle{plain}
\bibliography{Main}


\end{document}
