cek-call-cc/main.tex
2021-12-09 06:13:32 -06:00

95 lines
2.1 KiB
TeX

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{agda}
\usepackage{caption}
\usepackage{catchfilebetweentags}
\usepackage{cite}
\usepackage{newunicodechar}
\usepackage{url}
% \usetheme{CambridgeUS}
\usecolortheme{lily}
\setbeamercovered{transparent}
\usepackage{tikz}
\usetikzlibrary{positioning}
\titlegraphic{
\centering
\vspace{-1cm}
\includegraphics[width=.2\textwidth,height=.35\textheight]{cesk.png}
}
\title{First class continuations with CEK machines in Agda}
\author{Michael Zhang}
\date{}
\begin{document}
% \frame{\titlepage}
\begin{frame}[t]\vspace{1cm}
\maketitle
\end{frame}
\section{Primer on CESK}
\begin{frame}
\frametitle{What is a CESK machine?}
\begin{itemize}[<+->]
\item Abstract machine for interpreters, introduced by Matthias Felleisen.
\item Stands for $C$ontrol, $E$nvironment, $S$tore, $K$ontinuation.
\item Based on Matt Might's blog post on CESK machines \cite{might-cesk}.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{What are each of the components?}
\begin{itemize}[<+->]
\item $C$ontrol is your current term.
\item $E$nvironment is a list of addresses.
\item $S$tore is a mapping of addresses to values.
\item $K$ont is what gets evaluated next.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{What are continuations?}
\end{frame}
\begin{frame}
\begin{tikzpicture}[
roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm},
squarednode/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=5mm},
]
\node[draw, align=left, squarednode](ceskState){
C = $\lambda x . (\lambda y . x + y)$ \\
$E$ = [] \\
$\kappa$ = halt
};
\node[squarednode](ceskState2)[right=of ceskState]{CEK};
%lines
\draw[->] (ceskState.east) -- (ceskState2.west);
\end{tikzpicture}
\end{frame}
\section{Implementation}
\begin{frame}
\frametitle{Hellosu}
\include{./gentex/Project/Cesk.tex}
\end{frame}
\section{Conclusion}
\begin{frame}
\frametitle{Resources}
\bibliography{res}{}
\bibliographystyle{plain}
\end{frame}
\end{document}
% vim: set sw=2 :