Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Mark Cohen
/
thesis
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Merge Requests
0
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
9b75f0b4
authored
May 27, 2019
by
Mark Cohen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Started presentation
parent
8ddeadd5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
248 additions
and
1 deletions
.gitignore
final/.gitignore
presentation/main.tex
.gitignore
View file @
9b75f0b4
.cm/
.DS_Store
build/
final/.gitignore
deleted
100644 → 0
View file @
8ddeadd5
build/
presentation/main.tex
0 → 100644
View file @
9b75f0b4
\documentclass
{
beamer
}
\usetheme
{
default
}
\usepackage
{
amssymb, amsmath, amsthm, amsrefs
}
\usepackage
[english = american]
{
csquotes
}
\MakeOuterQuote
{
"
}
%% better code font
% https://tex.stackexchange.com/q/88001/5764
\usepackage
{
listings, inconsolata, letltxmacro
}
\lstset
{
basicstyle=
\ttfamily\footnotesize
, breaklines=true
}
\LetLtxMacro\oldttfamily\ttfamily
\DeclareRobustCommand
{
\ttfamily
}{
\oldttfamily\csname
ttsize
\endcsname
}
\newcommand
{
\setttsize
}
[1]
{
\def\ttsize
{
#1
}}
%
\setttsize
{
\footnotesize
}
% ONE MOTHERFUCKING SPACE AFTER EACH MOTHERFUCKING SENTENCE
\frenchspacing
% judgment form
\usepackage
{
ebproof
}
% turnstile alias
\newcommand
{
\proves
}{
\vdash
}
% function arrow alias
\newcommand
{
\arrow
}{
\to
}
% backslash alias
\newcommand
{
\bs
}{
\,
\backslash
\,
}
\title
{
Typeclasses with Associated Types for ML Languages
}
\subtitle
{
Bachelors' Thesis
}
\author
{
Mark Cohen
\and
Adam Shaw
}
\institute
[University of Chicago]
{
Department of Computer Science
\\
University of Chicago
}
\date
{
5 June 2019
}
\begin{document}
\raggedright
\begin{frame}
\titlepage
\end{frame}
\begin{frame}
[fragile]
{
Motivations
}
\begin{itemize}
\item
<1-> Some languages I like have some cool features. Why doesn't ML have those features?
\item
<2->
{
Python:
\begin{lstlisting}
for (k, v) in d:
if query(db, k) == None:
db[k] = v
\end{lstlisting}
}
\item
<3->
{
Rust:
\begin{lstlisting}
impl Iterator for Fibonacci
{
type Item = u32;
fn next(
&
mut self) -> Option<u32>
{
let new
_
next = self.curr + self.next;
self.curr = self.next;
self.next = new
_
next;
Some(self.curr)
}
}
\end{lstlisting}
}
\end{itemize}
\end{frame}
\begin{frame}
{
Motivations
}
\begin{itemize}
\item
<1-> But there are drawbacks to each of these schemes.
\item
<2-> Python: not type-sound
\item
<2-> Rust: trait-based
% can only impl traits for types you "own"
\end{itemize}
\end{frame}
\begin{frame}
{
Motivations
}
How can we bring this to the land of ML?
\end{frame}
\begin{frame}
{
Beginnings: polymorphic type inference
}
\end{frame}
% TODO: why not Haskell?
% \begin{frame}{Outline}
% \tableofcontents
% % You might wish to add the option [pausesections]
% \end{frame}
% % Section and subsections will appear in the presentation overview
% % and table of contents.
% \section{First Main Section}
% \subsection{First Subsection}
% \begin{frame}{First Slide Title}{Optional Subtitle}
% \begin{itemize}
% \item {
% My first point.
% }
% \item {
% My second point.
% }
% \end{itemize}
% \end{frame}
% \subsection{Second Subsection}
% % You can reveal the parts of a slide one at a time
% % with the \pause command:
% \begin{frame}{Second Slide Title}
% \begin{itemize}
% \item {
% First item.
% \pause % The slide will pause after showing the first item
% }
% \item {
% Second item.
% }
% % You can also specify when the content should appear
% % by using <n->:
% \item<3-> {
% Third item.
% }
% \item<4-> {
% Fourth item.
% }
% % or you can use the \uncover command to reveal general
% % content (not just \items):
% \item<5-> {
% Fifth item. \uncover<6->{Extra text in the fifth item.}
% }
% \end{itemize}
% \end{frame}
% \section{Second Main Section}
% \subsection{Another Subsection}
% \begin{frame}{Blocks}
% \begin{block}{Block Title}
% You can also highlight sections of your presentation in a block, with it's own title
% \end{block}
% \begin{theorem}
% There are separate environments for theorems, examples, definitions and proofs.
% \end{theorem}
% \begin{example}
% Here is an example of an example block.
% \end{example}
% \end{frame}
% % Placing a * after \section means it will not show in the
% % outline or table of contents.
% \section*{Summary}
% \begin{frame}{Summary}
% \begin{itemize}
% \item
% The \alert{first main message} of your talk in one or two lines.
% \item
% The \alert{second main message} of your talk in one or two lines.
% \item
% Perhaps a \alert{third message}, but not more than that.
% \end{itemize}
% \begin{itemize}
% \item
% Outlook
% \begin{itemize}
% \item
% Something you haven't solved.
% \item
% Something else you haven't solved.
% \end{itemize}
% \end{itemize}
% \end{frame}
% % All of the following is optional and typically not needed.
% \appendix
% \section<presentation>*{\appendixname}
% \subsection<presentation>*{For Further Reading}
% \begin{frame}[allowframebreaks]
% \frametitle<presentation>{For Further Reading}
% \begin{thebibliography}{10}
% \beamertemplatebookbibitems
% % Start with overview books.
% \bibitem{Author1990}
% A.~Author.
% \newblock {\em Handbook of Everything}.
% \newblock Some Press, 1990.
% \beamertemplatearticlebibitems
% % Followed by interesting articles. Keep the list short.
% \bibitem{Someone2000}
% S.~Someone.
% \newblock On this and that.
% \newblock {\em Journal of This and That}, 2(1):50--100,
% 2000.
% \end{thebibliography}
% \end{frame}
\end{document}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment