From f8d9db0cc6bbafccb4dca1a19f533b4b70518063 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Tue, 24 May 2016 21:17:02 +0200 Subject: [PATCH] update short and long --- long2/slides.tex | 162 +++++++++++++++++++++++++++++++++++---- shorts2/Makefile | 11 +++ shorts2/maintainable.tex | 50 ++++++++++++ 3 files changed, 209 insertions(+), 14 deletions(-) create mode 100644 shorts2/Makefile create mode 100644 shorts2/maintainable.tex diff --git a/long2/slides.tex b/long2/slides.tex index 82f4161..43106a1 100644 --- a/long2/slides.tex +++ b/long2/slides.tex @@ -1,31 +1,56 @@ \documentclass{beamer} \usepackage{stmaryrd} +\usepackage{listings} \title{Do you see what I see?} \subtitle{\emph{Functional pearl} (2016)} \author{M.~Lubbers} \date{\today} +\lstset{% + basicstyle=\ttfamily\small +} + \begin{document} \frame{\titlepage} % Objective: what is the goal of this work, what problem is addressed, what was % the current state of the art, who is the work aimed at? +\begin{frame} + \frametitle{About functional pearls\ldots} + \begin{itemize} + \item ICFP / Journal of Functional Programming + \item Elegance + \item Instructive + \item Fun + \item Editors + \begin{itemize} + \item Prof.\ Philip Wadler + \item \ldots + \pause% + \item Prof.\ Ralf Hinze + \end{itemize} + \end{itemize} +\end{frame} + \begin{frame} \frametitle{Objective} \begin{block}{Elaborate on the type system} + \pause% \begin{itemize} - \pause\item Racket programming language - \pause\item Implemented as macro - \pause\item No extra syntax or annotations - \pause\item Syntactical analyses + \item Racket programming language + \item Implemented as macro + \item No extra syntax or annotations + \item Syntactical/static analyses \end{itemize} \end{block} + \pause% \begin{block}{Why?} - \begin{itemize}[<+->] + \pause% + \begin{itemize} \item Pass typechecker? Correct program\ldots - \item Solve problems with arity - \item Look at text + \item Solve problems with arity(indexed) + \item Dependant types expensive \end{itemize} \end{block} \end{frame} @@ -34,8 +59,6 @@ \begin{frame} \frametitle{Proposal (1)} \begin{block}{Notation} - Implementation in Typed Racket\\ - %macro language that compiles in racket BEFORE type checking \texttt{$\llbracket$e$\rrbracket$}- Elaboration function on $e$\\ \end{block} \pause% @@ -46,22 +69,133 @@ \pause% \texttt{$\llbracket$ (curry ($\lambda$ (x y z) x)) $\rrbracket$} & \texttt{= (curry\_3 ($\lambda$ (x y z) x))}\\ - \end{tabular} + \pause% + \texttt{$\llbracket$ (curry ($\lambda$ (x y z a) x)) $\rrbracket$} + & \texttt{= (curry\_4 ($\lambda$ (x y z a) x))}\\ + \pause% + &\ldots + \end{tabular} \end{block} \end{frame} -% Evidence: Support for claims - Theorems? Case studies? Simulations? +\begin{frame} + \frametitle{Proposal (2)} + \begin{block}{Printf type annotations} + \pause% + \texttt{$\llbracket$ (printf "{\textasciitilde}b" 2) $\rrbracket$}\\ + \texttt{String Any * -> Void}\\\vspace{1em} + \pause% + \texttt{(printf "{\textasciitilde}b" (2:: Integer))}\\ + \texttt{String Integer -> Void} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{Proposal (3)} + \begin{block}{And much more\ldots} + \begin{itemize} + \item Regular expressions + \item Database queries + \item Fixed size vectors + \item\ldots + \end{itemize} + \end{block} +\end{frame} +% Evidence: Support for claims - Theorems? Case studies? Simulations? % Benchmarks? Does evidence address issues needed to support claims? +\begin{frame}[fragile] + \frametitle{Implementation (1)} + \begin{itemize} + \item Macros + \item Expanded recursively before computation + \item Syntax classes + \item + \begin{lstlisting} +(make-alias #'vector-length + (syntax-parser + [(_ v:vector/length) + #''v.evidence] + [_ #false])) + \end{lstlisting} + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Implementation (2)} + \framesubtitle{Vector length} + \begin{block}{Vector notation racket} + \begin{lstlisting} +#(4 42 1 0) + +(make-vector 4) + \end{lstlisting} + \end{block} + + \begin{block}{Length determination} + \begin{lstlisting} +(define vector? + (syntax-parser #:literals (make-vector) + [#(e* ...) + (length (syntax->datum #'(e* ...)))] + [(make-vector n:num/value) + (syntax->datum #'n.evidence)] + [_ #false])) + \end{lstlisting} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{Evidence} + \begin{itemize} + \item Portable to other languages with macro/templates + \item Increased binary size of $4\%$ + \item Implemented only for some features + \pause% + \item No real downsides given + \end{itemize} +\end{frame} % Shoulders of giants...: what previous research does this work build on? What % are the key underlying theoretical ideas? Software infrastructure? - -% Impact: has this work been influential? When later research papers cite it, -% what contribution is being referred to? +\begin{frame} + \frametitle{Shoulders of giants} + \begin{itemize} + \item Papers on macros + \item Language/feature documentation + \item Meta programming + \item\ldots + \end{itemize} +\end{frame} % Writing: analyse the writing +\begin{frame} + \frametitle{Writing} + \begin{itemize} + \item Implementation is not trivial or elegant + \item Colors + \item Literature\ldots a lot of documentation + \item LISP like language knowledge + \item Implementation sections are late + \item Examples in not very popular functional language + \begin{itemize} + \item Racket: $740$ + \item {LISP}: $2620$ + \item Haskell: $2800$ + \item\ldots + \end{itemize} + \end{itemize} +\end{frame} % Discussion points: end with questions which you think should arise +\begin{frame} + \frametitle{Discussion points} + \begin{itemize} + \item There should be more elaboration on the implementation. + \item Is the addition really helpful or does it just produce more + obfuscated compiler errors. + \item Paper should have been written in a more famous language. + \end{itemize} +\end{frame} \end{document} diff --git a/shorts2/Makefile b/shorts2/Makefile new file mode 100644 index 0000000..21bfb84 --- /dev/null +++ b/shorts2/Makefile @@ -0,0 +1,11 @@ +LATEX:=pdflatex +DOCUMENTS:=maintainable.pdf + +all: $(DOCUMENTS) + +%.pdf: %.tex + $(LATEX) $< + $(LATEX) $< + +clean: + $(RM) -v *.fmt *.aux *.log *.out *.toc *.pdf diff --git a/shorts2/maintainable.tex b/shorts2/maintainable.tex new file mode 100644 index 0000000..99b8eac --- /dev/null +++ b/shorts2/maintainable.tex @@ -0,0 +1,50 @@ +\documentclass{article} + +\usepackage{a4wide} % For better page usage +\usepackage{hyperref} + +\hypersetup{% + pdfauthor={Mart Lubbers}, + pdfsubject={Short review}, + pdfcreator={Mart Lubbers}, + pdfproducer={Mart Lubbers}, + hidelinks +} + +\author{Mart Lubbers (s4109503)} +\title{Maintainable Software Architecture with Monads, Algebras, and +Categories} +\date{2016{--}05{-}25} + +\begin{document} +\maketitle +\subsubsection*{Summary \& Evidence} +%Summary (as briefly as you can - two or three sentences) +The author describes the experiences and design of a software architecture used +on a university implemented in Haskell. The paper describes the libraries used, +the monadic structure, algebras and categories in order of appearance. By using +the latest techniques the maintainability is kept very high. + +%Evidence (what evidence is offered to support the claims?) + + +\subsubsection*{Strengths \& Weaknesses} +%Strength (what positive basis is there for publishing/reading it?) + +%Weaknesses + +\subsubsection*{Evaluation} +%Evaluation (if you were running the conference/journal where it was published, +%would you recommend acceptance?) + +%Comments on quality of writing + +\subsubsection*{Discussion} +%Queries for discussion +\begin{itemize} + \item Although the paper is very short there should be less unnecessary + implementation. + \item +\end{itemize} + +\end{document} -- 2.20.1