init
This commit is contained in:
commit
2559ecf3e2
15 changed files with 432 additions and 0 deletions
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
*.aux
|
||||
*.log
|
||||
*.nav
|
||||
*.out
|
||||
*.pdf
|
||||
*.synctex.gz
|
||||
*.toc
|
||||
*.vrb
|
23
12days.hs
Normal file
23
12days.hs
Normal file
|
@ -0,0 +1,23 @@
|
|||
gifts :: [String]
|
||||
gifts =
|
||||
[ "And a partridge in a pear tree!", "Two turtle doves,", "Three french hens,"
|
||||
, "Four calling birds,", "Five golden rings,", "Six geese a-laying,"
|
||||
, "Seven swans a-swimming,", "Eight maids a-milking,", "Nine ladies dancing,"
|
||||
, "Ten lords a-leaping,", "Eleven pipers piping,", "Twelve drummers drumming,"
|
||||
]
|
||||
|
||||
days :: [String]
|
||||
days = [
|
||||
"first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth",
|
||||
"ninth", "tenth", "eleventh", "twelfth" ]
|
||||
|
||||
verseOfTheDay :: Int -> String
|
||||
verseOfTheDay day =
|
||||
"On the " ++ days !! day ++ " day of Christmas my true love gave to me... \n"
|
||||
++ concat (map (++ "\n") [dayGift day d | d <- [day, day-1..0]]) ++ "\n"
|
||||
where
|
||||
dayGift 0 _ = "A partridge in a pear tree!"
|
||||
dayGift _ gift = gifts !! gift
|
||||
|
||||
main :: IO ()
|
||||
main = putStrLn (concatMap verseOfTheDay [0..11])
|
212
Functional programming.tex
Normal file
212
Functional programming.tex
Normal file
|
@ -0,0 +1,212 @@
|
|||
\documentclass[aspectratio=1610,10pt]{beamer}
|
||||
\usepackage{fontspec}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[english]{babel}
|
||||
\usepackage{listings}
|
||||
\usepackage{tcolorbox}
|
||||
\usepackage{hyperref}
|
||||
|
||||
\newtcbox{\mybox}{
|
||||
on line,
|
||||
%colframe=mycolor,
|
||||
colback=lightgray,
|
||||
%boxrule=0.5pt,
|
||||
arc=4pt,
|
||||
boxsep=0pt,
|
||||
left=6pt,
|
||||
right=6pt,
|
||||
top=6pt,
|
||||
bottom=6pt
|
||||
}
|
||||
|
||||
\lstdefinelanguage{Haskelln}{
|
||||
language = Haskell,
|
||||
otherkeywords = {=>,->,::,++,!!,|,<-},
|
||||
}
|
||||
|
||||
\lstset{
|
||||
frame=none,
|
||||
xleftmargin=2pt,
|
||||
stepnumber=1,
|
||||
numbers=none,
|
||||
numbersep=5pt,
|
||||
numberstyle=\ttfamily\tiny\color{lightgray},
|
||||
belowcaptionskip=\bigskipamount,
|
||||
captionpos=b,
|
||||
escapeinside={*'}{'*},
|
||||
language=Haskelln,
|
||||
tabsize=2,
|
||||
emphstyle={\bf},
|
||||
commentstyle=\it,
|
||||
stringstyle=\mdseries\ttfamily\color{green},
|
||||
showspaces=false,
|
||||
keywordstyle=[1]\color{cyan}\bfseries\ttfamily,
|
||||
keywordstyle=[2]\color{orange}\bfseries\ttfamily,
|
||||
keywordstyle=[3]\color{yellow}\bfseries\ttfamily,
|
||||
keywordstyle=[4]\color{red}\bfseries\ttfamily,
|
||||
keywordstyle=[5]\color{purple}\bfseries\ttfamily,
|
||||
keywordstyle=[6]\color{blue}\bfseries\ttfamily,
|
||||
%keywordstyle=\color{cyan}\ttfamily
|
||||
columns=flexible,
|
||||
basicstyle=\color{white}\small\ttfamily,
|
||||
showstringspaces=false,
|
||||
morecomment=[l]\%,
|
||||
emptylines=1,
|
||||
}
|
||||
|
||||
% You can set fonts for Latin script here
|
||||
\setmainfont{FreeSerif}
|
||||
\setsansfont{FreeSans}
|
||||
\setmonofont{Fira Mono}
|
||||
|
||||
\usetheme{DarkConsole}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% The metadata of the presentation
|
||||
\title{Functional Programming}
|
||||
\subtitle{Using the example of Haskell}
|
||||
\author[]{Amedeo Molnár - \href{mailto:nek0@nek0.eu}{nek0@nek0.eu}}
|
||||
%\institute{SRH Berufsbildungswerk Dresden gGmbH}
|
||||
\date{13. Januar 2020} % Replace with date of the presentation
|
||||
|
||||
\begin{frame}[plain]
|
||||
\maketitle
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Overview}
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Languages}
|
||||
\begin{center}
|
||||
\begin{tabular}{ccc}
|
||||
\onslide<2->{\mybox{\includegraphics[width=.2\linewidth]{pictures/Lisplogo_alien_256.png}}} &
|
||||
&
|
||||
\onslide<3->{\mybox{\includegraphics[width=.2\linewidth]{pictures/OCaml_Logo.png}}}
|
||||
\\
|
||||
&
|
||||
\onslide<6->{\mybox{\includegraphics[width=.25\linewidth]{pictures/Haskell-Logo.png}}}
|
||||
&
|
||||
\\
|
||||
\onslide<4->{\mybox{\includegraphics[width=.16\linewidth]{pictures/Swift-Logo.png}}}
|
||||
&
|
||||
&
|
||||
\onslide<5->{\mybox{\includegraphics[height=.16\linewidth]{pictures/Elixir-Logo.png}}}
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Core Concepts}
|
||||
\begin{itemize}
|
||||
\item \underline{Pure functions}\\
|
||||
{\onslide<2->{\color{lightgray}A (pure) function must produce the same
|
||||
result given the same input and does not rely on or alter external state.}}
|
||||
\item \underline{Non-imperative functions}\\
|
||||
{\onslide<3->{\color{lightgray}A function is not a sequence of commands, but
|
||||
a nesting of other functions.}}
|
||||
\item \underline{First class citizens}\\
|
||||
{\onslide<4->{\color{lightgray}Functions are equal to other data objects and
|
||||
can thus be passed as function arguments or be computation results
|
||||
themselves.}}
|
||||
\item \underline{Closures}\\
|
||||
{\onslide<5->{\color{lightgray}Functions can only access variables inside
|
||||
context they have been created. This can happen even when the function
|
||||
itself has left this context. In this case the variable values are frozen at
|
||||
the moment of departure inside the function.}}
|
||||
\item \underline{Lambdas}\\
|
||||
{\onslide<6->{\color{lightgray}A function definition can take place without
|
||||
an explicit name in the position of a function symbol.}}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section{Main differences to imperative programming}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{\secname}
|
||||
|
||||
\begin{itemize}
|
||||
\item<2-> Avoidance of side effects
|
||||
\item<3-> No state
|
||||
\item<4-> No Loops
|
||||
\item<5-> Immutable variables
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section{Examples}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{\secname}
|
||||
|
||||
\begin{lstlisting}
|
||||
sq :: (Floating a) => a -> a
|
||||
sq x = x * x
|
||||
\end{lstlisting}
|
||||
|
||||
\vspace{1cm}
|
||||
|
||||
\begin{lstlisting}
|
||||
ringArea :: (Floating a) => a -> a -> a
|
||||
ringArea r1 r2 = pi * (sq r1 - sq r2)
|
||||
\end{lstlisting}
|
||||
|
||||
\vspace{1cm}
|
||||
|
||||
\begin{lstlisting}
|
||||
fib :: Integer -> Integer
|
||||
fib 0 = 0
|
||||
fib 1 = 1
|
||||
fib n = fib (n - 2) + fib (n - 1)
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Advanced Example}
|
||||
|
||||
\lstinputlisting[
|
||||
basicstyle=\color{white}\fontsize{9pt}{9pt}\ttfamily
|
||||
]{12days.hs}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\section{Fields of Application}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Fields of Application}
|
||||
|
||||
\begin{itemize}
|
||||
\item<2-> Big Data
|
||||
\item<3-> Finance Sector
|
||||
\item<4-> Science
|
||||
\item<5-> Virtually everywhere
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section{Conclusion}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Literature recommendations}
|
||||
|
||||
\begin{itemize}
|
||||
\item \href{http://learnyouahaskell.com/}{Learn you a Haskell for Great Good!}
|
||||
\item \href{http://book.realworldhaskell.org/}{Real World Haskell}
|
||||
\item
|
||||
\href{https://www.oreilly.com/library/view/parallel-and-concurrent/9781449335939}{Parallel and Concurrent Programming in Haskell}
|
||||
\item \href{http://www.cs.yale.edu/homes/hudak/Papers/HSoM.pdf}{The Haskell
|
||||
School of Music}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[plain]
|
||||
\begin{center}
|
||||
{\Huge Thank you for your attention!}\\
|
||||
This presentation is avalable for download at:\\
|
||||
\url{https://github.com/nek0/presentation-fp-haskell}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
3
README.md
Normal file
3
README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# presentation-fp-haskell
|
||||
|
||||
A short presentation on functional programming with Haskell
|
22
beamercolorthemeBlackboard.sty
Normal file
22
beamercolorthemeBlackboard.sty
Normal file
|
@ -0,0 +1,22 @@
|
|||
%% Copyright (c) 2011-2016 Kazuki Maeda <kmaeda@kmaeda.net>
|
||||
%%
|
||||
%% Distributable under the MIT License:
|
||||
%% http://www.opensource.org/licenses/mit-license.php
|
||||
%%
|
||||
\ProvidesPackage{beamercolorthemeBlackboard}[2012/06/07 ]
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
\usepackage{kmbeamer_color}
|
||||
|
||||
\setbeamercolor*{background canvas}{bg=bottlegreen}
|
||||
\setbeamercolor*{normal text}{fg=snow}
|
||||
\setbeamercolor*{alerted text}{fg=midyellow}
|
||||
\setbeamercolor*{structure}{fg=water}
|
||||
|
||||
\setbeamercolor*{title}{fg=water}
|
||||
|
||||
\mode
|
||||
<all>
|
||||
|
||||
\endinput
|
28
beamercolorthemeDarkConsole.sty
Normal file
28
beamercolorthemeDarkConsole.sty
Normal file
|
@ -0,0 +1,28 @@
|
|||
%% Copyright (c) 2013-2016 Kazuki Maeda <kmaeda@kmaeda.net>
|
||||
%%
|
||||
%% Distributable under the MIT License:
|
||||
%% http://www.opensource.org/licenses/mit-license.php
|
||||
%%
|
||||
\ProvidesPackage{beamercolorthemeDarkConsole}[2013/05/08 ]
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
\usepackage{kmbeamer_color}
|
||||
|
||||
\setbeamercolor*{background canvas}{bg=backgroundGray}
|
||||
\setbeamercolor*{normal text}{fg=whiteee}
|
||||
\setbeamercolor*{alerted text}{fg=tomato}
|
||||
\setbeamercolor*{structure}{fg=gold}
|
||||
|
||||
\setbeamercolor*{title}{fg=chartreuse}
|
||||
\setbeamercolor*{frametitle}{fg=chartreuse}
|
||||
|
||||
\setbeamercolor*{itemize item}{fg=chartreuse}
|
||||
\setbeamercolor*{enumerate item}{fg=chartreuse}
|
||||
|
||||
|
||||
|
||||
\mode
|
||||
<all>
|
||||
|
||||
\endinput
|
18
beamerfontthemeluatexja.sty
Normal file
18
beamerfontthemeluatexja.sty
Normal file
|
@ -0,0 +1,18 @@
|
|||
%% Copyright (c) 2011-2016 Kazuki Maeda <kmaeda@kmaeda.net>
|
||||
%%
|
||||
%% Distributable under the MIT License:
|
||||
%% http://www.opensource.org/licenses/mit-license.php
|
||||
%%
|
||||
\ProvidesPackage{beamerfontthemeluatexja}[2011/11/03 ]
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
\RequirePackage{luatexja-fontspec}
|
||||
|
||||
\setmainjfont[NoEmbed]{GothicBBB-Medium}
|
||||
\setsansjfont[NoEmbed]{GothicBBB-Medium}
|
||||
|
||||
\mode
|
||||
<all>
|
||||
|
||||
\endinput
|
53
beamerthemeDarkConsole.sty
Normal file
53
beamerthemeDarkConsole.sty
Normal file
|
@ -0,0 +1,53 @@
|
|||
%% Copyright (c) 2013-2016 Kazuki Maeda <kmaeda@kmaeda.net>
|
||||
%%
|
||||
%% Distributable under the MIT License:
|
||||
%% http://www.opensource.org/licenses/mit-license.php
|
||||
%%
|
||||
\ProvidesPackage{beamerthemeDarkConsole}[2013/05/16 ]
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
\RequirePackage{kmbeamer_common}
|
||||
|
||||
\usecolortheme{DarkConsole}
|
||||
|
||||
\def\familydefault{\ttdefault}
|
||||
|
||||
\setbeamersize{text margin left=2mm,text margin right=2mm}
|
||||
|
||||
\setbeamerfont{alerted text}{series=\bfseries}
|
||||
\setbeamerfont{structure}{series=\bfseries}
|
||||
\setbeamerfont{title}{size=\normalsize,series=\bfseries}
|
||||
\setbeamerfont{frametitle}{size=\normalsize,series=\bfseries}
|
||||
\setbeamerfont{block title}{size=\normalsize,series=\bfseries}
|
||||
\setbeamerfont{footline}{size*={5}{\z@},series=\bfseries}
|
||||
|
||||
\setbeamertemplate{itemize item}{*}
|
||||
\setbeamertemplate{itemize subitem}{*}
|
||||
\setbeamertemplate{itemize subsubitem}{*}
|
||||
\setbeamertemplate{frametitle}{{\usebeamercolor[fg]{normal text}\texttt{\mdseries >\hbox{}>\hbox{}> }}\boldmath\insertframetitle}
|
||||
\setbeamertemplate{headline}{}
|
||||
\setbeamertemplate{footline}{
|
||||
\setbox\kmbmr@tmpboxa\hbox{[\ifnum\insertsectionnumber>0\boldmath\insertsectionnumber.~\insertsection\else\char"7E\fi]\$~\_}
|
||||
\setbox\kmbmr@tmpboxb\hbox{[\insertframenumber/\inserttotalframenumber]}
|
||||
\ht\kmbmr@tmpboxa=1mm\dp\kmbmr@tmpboxa=0mm
|
||||
\ht\kmbmr@tmpboxb=1mm\dp\kmbmr@tmpboxb=0mm
|
||||
\vspace{5.2mm}
|
||||
\hspace{2mm}\noindent\box\kmbmr@tmpboxa\hfill\box\kmbmr@tmpboxb\hspace{2mm}
|
||||
\vspace{1.3mm}
|
||||
}
|
||||
\setbeamertemplate{title page}{
|
||||
\renewcommand\thefootnote{\fnsymbol{footnote}}
|
||||
\setcounter{footnote}{1} % \dagger
|
||||
\noindent >\hbox{}>\hbox{}> {\usebeamerfont{title}\usebeamercolor[fg]{title}\bfseries\boldmath\inserttitle}
|
||||
\ifx\insertsubtitle\@empty\else\\>\hbox{}>\hbox{}> {\usebeamerfont{title}\usebeamercolor[fg]{title}\insertsubtitle}\fi~\\[1em]
|
||||
Name: \insertauthor\ \ifx\insertinstitute\@empty\else(\insertinstitute)\fi\\
|
||||
Date: \insertdate
|
||||
\renewcommand\thefootnote{\arabic{footnote}}
|
||||
\setcounter{footnote}{0}
|
||||
}
|
||||
|
||||
\mode
|
||||
<all>
|
||||
|
||||
\endinput
|
48
kmbeamer_color.sty
Normal file
48
kmbeamer_color.sty
Normal file
|
@ -0,0 +1,48 @@
|
|||
%% Copyright (c) 2011-2016 Kazuki Maeda <kmaeda@kmaeda.net>
|
||||
%%
|
||||
%% Distributable under the MIT License:
|
||||
%% http://www.opensource.org/licenses/mit-license.php
|
||||
%%
|
||||
\ProvidesPackage{kmbeamer_color}[2013/05/08 ]
|
||||
|
||||
%% black
|
||||
\definecolor{backgroundGray}{HTML}{1e1e1e}
|
||||
|
||||
%% blue
|
||||
\definecolor{midnightblue}{HTML}{00152D}
|
||||
\definecolor{navyblue}{HTML}{1F2F54}
|
||||
\definecolor{ultramarine}{HTML}{4B64A1}
|
||||
\definecolor{water}{HTML}{A9CEEC}
|
||||
|
||||
%% brown
|
||||
\definecolor{sepia}{HTML}{4A3B2A}
|
||||
\definecolor{brown}{HTML}{763900}
|
||||
\definecolor{goldbrown}{HTML}{C47600}
|
||||
\definecolor{satsuma}{HTML}{FA8000}
|
||||
|
||||
%% green
|
||||
\definecolor{deepgreen}{HTML}{005731}
|
||||
\definecolor{bottlegreen}{HTML}{264435}
|
||||
\definecolor{tokiwa}{HTML}{357C4C}
|
||||
\definecolor{indigo}{HTML}{234794}
|
||||
\definecolor{chartreuse}{HTML}{7FFF00}
|
||||
|
||||
%% red
|
||||
\definecolor{kerria}{HTML}{FFA500}
|
||||
\definecolor{vermilion}{HTML}{ED514E}
|
||||
\definecolor{madder}{HTML}{B22D35}
|
||||
\definecolor{maroon}{HTML}{682A2B}
|
||||
\definecolor{tomato}{HTML}{FF6347}
|
||||
|
||||
%% white
|
||||
\definecolor{snow}{HTML}{F1F1F1}
|
||||
\definecolor{whiteee}{HTML}{EEEEEC}
|
||||
|
||||
%% yellow
|
||||
\definecolor{midyellow}{HTML}{FAD43A}
|
||||
\definecolor{lemonchiffon}{HTML}{FFFACD}
|
||||
\definecolor{gold}{HTML}{FFD700}
|
||||
|
||||
|
||||
|
||||
\endinput
|
17
kmbeamer_common.sty
Normal file
17
kmbeamer_common.sty
Normal file
|
@ -0,0 +1,17 @@
|
|||
%% Copyright (c) 2011–2016 Kazuki Maeda <kmaeda@kmaeda.net>
|
||||
%%
|
||||
%% Distributable under the MIT License:
|
||||
%% http://www.opensource.org/licenses/mit-license.php
|
||||
%%
|
||||
\ProvidesPackage{kmbeamer_common}[2012/04/20 ]
|
||||
|
||||
\newbox\kmbmr@tmpboxa
|
||||
\newbox\kmbmr@tmpboxb
|
||||
|
||||
\usefonttheme{professionalfonts}
|
||||
|
||||
\setbeamertemplate{sections/subsections in toc}[sections numbered]{}
|
||||
\setbeamertemplate{navigation symbols}{}
|
||||
\setbeamertemplate{qed symbol}{}
|
||||
|
||||
\endinput
|
BIN
pictures/Elixir-Logo.png
Normal file
BIN
pictures/Elixir-Logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.9 KiB |
BIN
pictures/Haskell-Logo.png
Normal file
BIN
pictures/Haskell-Logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.6 KiB |
BIN
pictures/Lisplogo_alien_256.png
Normal file
BIN
pictures/Lisplogo_alien_256.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
BIN
pictures/OCaml_Logo.png
Normal file
BIN
pictures/OCaml_Logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
BIN
pictures/Swift-Logo.png
Normal file
BIN
pictures/Swift-Logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Loading…
Reference in a new issue