Initial Commit

* Notes for basic talk layout
 * gitignore
This commit is contained in:
Oliver Rümpelein 2016-04-19 17:13:44 +02:00
commit 37e1cda3e4
2 changed files with 235 additions and 0 deletions

177
.gitignore vendored Normal file
View file

@ -0,0 +1,177 @@
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
## Intermediate documents:
*.dvi
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.brf
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.snm
*.vrb
# cprotect
*.cpt
# fixme
*.lox
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
# gnuplottex
*-gnuplottex-*
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Comment the next line if you want to keep your tikz graphics files
*.tikz
*-tikzDictionary
# listings
*.lol
# makeidx
*.idx
*.ilg
*.ind
*.ist
# minitoc
*.maf
*.mlf
*.mlt
*.mtc
*.mtc[0-9]
*.mtc[1-9][0-9]
# minted
_minted*
*.pyg
# morewrites
*.mw
# mylatexformat
*.fmt
# nomencl
*.nlo
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# todonotes
*.tdo
# xindy
*.xdy
# xypic precompiled matrices
*.xyc
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# Kile
*.backup
# KBibTeX
*~[0-9]*

58
Notes.md Normal file
View file

@ -0,0 +1,58 @@
# WTFunctional: Modifying your WTF-Count using functional programming #
## Content ##
* Dafunc? Understanding functional programming with Haskell.
+ no side-effects, no mutability => maintainability
+ recursion
+ functions as first class “objects”: i.e. C++, 5; is a valid statement
+ lambdas
+ lists, maps, filters, folds
=> readability, less code reproduction, threadsafety…
+ currying => just convenience
+ code example: Pythagoraian triangles.
* Phuncy: The pythonic way is functional!
+ Not strictly functional
+ recursion, fafco
+ lambda syntax
+ map, fold => example (sum of squares?)
- python lambda syntax: lambda a,b: a+b
- fold with reduce
- don't return lists, but iterators!
- Note: 2: map, filter, reduce
3: map, filter, functools.reduce()
```Removed reduce(). Use functools.reduce() if you really need it;
however, 99 percent of the time an explicit for loop is more
readable.```
Why use it? => Multi-processing!
```
a = list(range(10))
b = 0
for i in a:
b += i**2
print(b)
```
vs.
```
from functools import reduce
print(reduce(lambda x,y: x+y,map(lambda x: x**2,range(10))))
```
+ currying: not really, but binding via lambdas or functools.partial() or
https://mtomassoli.wordpress.com/2012/03/18/currying-in-python/
+ decorators!
+ still FP, has advantages and is heavily used, i.e. in genomics (works on
tons of lengthy lists)
* FunCtional++: On the fast lane
+ "Classical" C++ has some functional stuff, bust i.e. no lambdas (hardly usable)
+ Changed with the new C++11-standard
+ Buzzwords:
- `map` defines a Datatype in C++!
- lambdas in C++
```[](int x, int y) { return a<b;} ;```
[] can be used to capture variables, i.e. by reference or value
- `std::for_each` from `algorithm`: Apply `void fun(T &a)` to iterator
containing `T` values
- `std::transform` from `algorithm`: same as for_each, but stores return
value in another range
- `std::accumulate` from `numeric`: Wants binary operation, i.e. `std::minus<int>`