2. Billennium 2015 / Wszelkie prawa zastrzeżone.
agenda
1. init
1. definition
2. components
3. history
2. begin
1. function
1. base value
2. higher-order function
3. first-class function
4. pure
3. Billennium 2015 / Wszelkie prawa zastrzeżone.
agenda
2. begin
2. immutable data
3. recursion
4. evaluation
5. type system
3. end
1. problems
2. usage
3. reflection
4. links
4. Billennium 2015 / Wszelkie prawa zastrzeżone.
init
programming paradigm
expression > statements
immutable data
function as base value
5. Billennium 2015 / Wszelkie prawa zastrzeżone.
history
30’ lambda calculus
50’ IPL, Lisp
70’ Backus; ML, Scheme
90’ Haskell
… F#
6. Billennium 2015 / Wszelkie prawa zastrzeżone.
begin
first-class function
anonymous (lambda)
defined anywhere
closure
higher-order function
function as argument
currying (partial application)
return function
pure
no data dependency
no side effect
referential transparency
7. Billennium 2015 / Wszelkie prawa zastrzeżone.
begin
immutable data
type system
type inference
untyped / typed lambda calculus
recursion
vs loop (iteration)
mathematical induction
evaluation
strict (eager)
non-strict (lazy)
8. Billennium 2015 / Wszelkie prawa zastrzeżone.
end
problems
state simulation
efficiency
lazy evaluation
usage
languages
purely functional
other
when
9. Billennium 2015 / Wszelkie prawa zastrzeżone.
end
reflection
clean
expressive
less bug
gaining popularity
10. Billennium 2015 / Wszelkie prawa zastrzeżone.
end
Links
sicp
https://mitpress.mit.edu/sicp/
coursera
https://www.coursera.org/course/progfun
edx
https://www.edx.org/course/introduction-functional-programming-delftx-fp101x