Title: WTFunctional – Talk slides and examples
Author: Oliver Rümpelein
Affiliation: Member of F3L-Team
Quotes Language: english
Date: 2016-05-25
CSS: /md.css
Html header:
# [%Title] #
Want to read this file properly? Visit the
[official homepage][wtfoff]!
The talk was first held at [3. F3L-GPN][f3l] in Regensburg, on 2015-06-11. Its
target is to show how even non-functional programming languages can profit from
using functional paradigms.
{{TOC}}
## Files ##
You may download both [the slides PDF][ext-slides] in handout mode, and a
[source archive][ext-examples] of the examples used during the talk.
## Structure ##
The talk is split into three main parts:
Part One
: deals with functional programming in general. What are its benefits?
: Afterwards, the main ideas behind it get shown using [Haskell][haskell].
Part Two
: is all about using some of the mentioned ideas in [Python][python].
: The focus lies on getting a feeling for functional programming, using a
language that is heavily influenced by those designs.
Part Three
: tries to transfer those ideas to C++.
: It also deals with the weaknesses and advantages of the modern C++11/14,
and gives a preview of some features in C++17/20/22
## Pages ##
There are two main-pages for this talk. One is my [homepage][wtfoff], the other
one is the [GitLab-server of F3L][f3lgit] which contains the whole example and
slide sources.
## Compiling ##
If any errors occur, please [drop me a mail][mailto].
### Slides ###
Unfortunately, the slides have quite a lot of dependencies. You need the
following:
* A working instance of [LuaLaTeX][lualatex] (some decent [texlive-distro][texlive] should suffice),
* [Pygments][pygments] up-and-running (usually in the repositories as
'python-pygmetize' or so),
* a working installation of the [minted][minted] package for latex (once
again, texlive should be enough), and
* the two fonts [Inconsolata G][inconsolata-g] and [Fira Sans][fira] installed,
* not to talk of biber with biblatex.
Then, compile using
```
lualatex -shell-escape wtfunctional
biber wtfunctional
lualatex -shell-escape wtfunction
```
### Examples ###
Exmaple 00_dafunc.cpp is not that important, and should build with any decent C++-compiler.
For the haskell-example, use `ghci`, then `:load 01_haskell.hs`. The functions provided are:
* extract (≅ fst)
* addto
* mfold (≅ foldl)
02_python.py can be executed using `python`, or inspected using `python -m`. It
provides:
* a debug-function usable as decorator
* a bubblesort-implementation using functional paradigms.
03_cpp.cpp needs a compiler capable of C++11. It shows code- and
runtime-examples for `for_each`, `transform` and `accumulate`.
04_cpp17.cpp needs a compiler capable of C++17-folds, `gcc` or `clang` should
do. Then compile using the option `std=c++1z`
## License ##
This is licensed under MIT-License. For the exact formulation, see License.txt.
[ext-examples]: https://www.pheerai.de/assets/wtf_examples.tar.gz
[f3l]: https://www.f3l.de
[f3lgit]: https://git.f3l.de/pheerai/wtfunctional
[fira]: https://github.com/mozilla/Fira
[haskell]: https://www.haskell.org
[inconsolata-g]: http://leonardo-m.livejournal.com/77079.html
[lualatex]: http://luatex.org
[mailto]: mailto:oli_r@fg4f.de
[minted]: http://github.com/gpoore/minted
[pygments]: http://pygments.org/
[python]: https://python.org/
[ext-slides]: https://www.pheerai.de/assets/wtf_slides.pdf
[texlive]: https://www.tug.org/texlive/
[wtfoff]: https://www.pheerai.de/wtf/