Initial commit
[darcs-mirror-talk-kfpg-haskell-roadshow.git] / KaFuncProgGroup-2012-12-18.tex
1 % © Copyright 2011 Joachim Breitner
2 % Distributed under the terms of the Creative Commons Attribution license.
3 \documentclass{beamer}
4
5 \newcommand{\hide}{\onslide+<+(1)->}
6
7 \usetheme[titlepage0,22pt]{KIT}
8 \setbeamercolor{structure}{fg=KITgreen}
9
10
11 \usepackage[utf8]{inputenc}
12 \usepackage[TS1,T1]{fontenc}
13 \usepackage[english]{babel}
14 \usepackage{listings}
15 \usepackage{xcolor}
16 \usepackage{tikz}
17 \usetikzlibrary{backgrounds,decorations.pathreplacing}
18 \usepackage{mathpartir}
19 \usepackage{adjustbox}
20 \usepackage{amsmath}
21 \usepackage{mathtools}
22 \usepackage[safe]{tipa} % for \textlambda
23 \usepackage{wasysym}
24 \usepackage{stmaryrd}
25
26 \definecolor{light-gray}{gray}{0.95}
27 \lstdefinestyle{haskell}{
28         ,columns=flexible
29         ,basewidth={.365em}
30         ,keepspaces=True
31         ,belowskip=0pt
32         ,backgroundcolor=\color{light-gray}
33         ,frame=single
34         ,xleftmargin=2em
35         ,xrightmargin=2em
36         ,basicstyle=\small\sffamily
37         ,stringstyle=\itshape
38         ,language=Haskell
39         ,texcl=true
40         ,showstringspaces=false
41         ,keywords={module,where,import,data,let,in,case,of}
42 }
43 \lstnewenvironment{haskell}{\lstset{style=haskell}}{}
44
45
46 \title{A Haskell Roadshow}
47 \KITtitleimage[viewport=0 40 400 100]{screenshot}
48 \logo{\includegraphics{Telekom}}
49 \author{Joachim Breitner}
50 \date{2012-12-18}
51 \subtitle[\insertauthor]{\insertauthor\\The Karlsruhe Functional Programmers Meetup Group\\December 18, 2012}
52 \iflanguage{ngerman}{%
53   \institute{LEHRSTUHL PROGRAMMIERPARADIGMEN}%
54 }{%
55   \institute{PROGRAMMING PARADIGMS GROUP}%
56 }
57
58
59 \DeclareTextSymbol\textlambda{T3}{171}           % Lambda
60 \DeclareTextSymbolDefault\textlambda{T3}
61 \DeclareUnicodeCharacter{03BB}{\textlambda}
62
63
64 \begin{document}
65
66 \frame[plain]{\titlepage}
67 \only<article>{\maketitle}
68
69 \section{Features}
70 \only<presentation>{\subsection*{}}
71
72 \begin{frame}
73 \frametitle{Haskell is know for}
74
75 being a
76 \begin{center}
77 \Large
78 functional\\pure\\lazy evaluated\\strongly typed\\interpreted\\compiled
79 \end{center}
80 programming language \ldots
81
82 \raggedleft
83 \pause
84 and it is \alert{fun} to program in.
85
86 \end{frame}
87
88 \begin{frame}
89 \frametitle{Lets demonstrate that}
90
91 Visualize (one aspect) of this data:
92
93 \includegraphics[width=\linewidth]{passwd-page}
94 \end{frame}
95
96 \begin{frame}%
97 \begin{tikzpicture}[remember picture,overlay]
98 \fill[black] (current page.north east) rectangle (current page.south west);
99 \end{tikzpicture}%
100 \strut
101 \color{white}
102 \vfill
103 \centering
104 \Huge{Live demonstration}
105 \vfill
106 \end{frame}
107
108
109 \newcommand{\cm}[1]{
110 \structure<+>{#1 \rlap{\onslide<.>{ ?}\onslide<.(1)->{ \checkmark}}}\\
111 }
112
113 \begin{frame}
114 \frametitle{Did our promise hold?}
115
116 Haskell is indeed 
117 \begin{center}
118 \Large
119 \cm{functional}
120 \cm{pure}
121 \cm{lazy evaluated}
122 \cm{strongly typed}
123 \cm{interpreted}
124 \cm{compiled}
125 \end{center}
126 programming language \ldots
127
128 \raggedleft
129 and it is \alert{fun} to program in.\visible<+- >{ ?}
130
131 \end{frame}
132
133 \begin{frame}
134 \frametitle{What we skipped today}
135 \begin{block}{All the small things\ldots}
136 \begin{itemize}
137 \item More about data types
138 \item (Many) more benefits from the type system
139 \item Polymorphism
140 \item Type classes
141 \item Monads
142 \item Foreign Function Interface
143 \end{itemize}
144 \end{block}
145 \pause
146 \begin{block}{\ldots you will find here}
147 \begin{itemize}
148 \item Tutorial “Learn you a Haskell”
149 \item O’Reilly book “Real World Haskell”
150 \item Tutorial “Write Yourself a Scheme in 48 Hours”
151 \end{itemize}
152 \end{block}
153 \end{frame}
154
155 \begin{frame}
156 \frametitle{Conclusion}
157 \begin{block}{Writing Haskell code}
158 \begin{itemize}
159 \item takes less time,
160 \item produces less bugs and
161 \item is more fun.
162 \end{itemize}
163 \end{block}
164 \vfill
165 Therefore, CU all on 
166 \begin{center}
167 \structure{\#haskell} on IRC (freenode)
168 \end{center}
169 and on the 
170 \begin{center}
171 \structure{haskell-cafe}@haskell.org mailing list!
172 \end{center}
173 \end{frame}
174
175 \begin{frame}%
176 \begin{tikzpicture}[remember picture,overlay]
177 \fill[black] (current page.north east) rectangle (current page.south west);
178 \end{tikzpicture}%
179 \strut
180 \color{white}
181 \vfill
182 \small{© 2012 Joachim Breitner.\\
183 Distributed under the terms of the Creative Commons Attribution license.}
184 \end{frame}
185
186 \end{document}
187