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/