2. IN COMPUTER SCIENCE, FP IS A PROGRAMMING
PARADIGM - A STYLE OF BUILDING THE STRUCTURE AND
ELEMENTS OF COMPUTER PROGRAMS - THAT TREATS
COMPUTATION AS THE EVALUATION OF MATHEMATICAL
FUNCTIONS AND AVOIDS CHANGING - STATE AND
MUTABLE DATA.
IN COMPUTER SCIENCE, FP IS A PROGRAMMING
PARADIGM - A STYLE OF BUILDING THE STRUCTURE AND
ELEMENTS OF COMPUTER PROGRAMS - THAT TREATS
COMPUTATION AS THE EVALUATION OF MATHEMATICAL
FUNCTIONS AND AVOIDS CHANGING - STATE AND
MUTABLE DATA.
FUNCTIONAL PROGRAMMING
IN COMPUTER SCIENCE, FP IS A PROGRAMMING
PARADIGM - A STYLE OF BUILDING THE STRUCTURE AND
ELEMENTS OF COMPUTER PROGRAMS - THAT TREATS
COMPUTATION AS THE EVALUATION OF MATHEMATICAL
FUNCTIONS AND AVOIDS CHANGING - STATE AND
MUTABLE DATA.
IN COMPUTER SCIENCE, FP IS A PROGRAMMING
PARADIGM - A STYLE OF BUILDING THE STRUCTURE AND
ELEMENTS OF COMPUTER PROGRAMS - THAT TREATS
COMPUTATION AS THE EVALUATION OF MATHEMATICAL
FUNCTIONS AND AVOIDS CHANGING - STATE AND
MUTABLE DATA.
Someone on Wikipedia
3. FP HAS ITS ORIGINS IN LAMBDA CALCULUS, A FORMAL SYSTEM
DEVELOPED IN THE 1930S TO INVESTIGATE COMPUTABILITY, THE
ENTSCHEIDUNGSPROBLEM, FUNCTION DEFINITION, FUNCTION
APPLICATION, AND RECURSION. MANY FUNCTIONAL
PROGRAMMING LANGUAGES CAN BE VIEWED AS ELABORATIONS
ON THE LAMBDA CALCULUS.
Someone else on Wikipedia
FUNCTIONAL PROGRAMMING
FP HAS ITS ORIGINS IN LAMBDA CALCULUS, A FORMAL SYSTEM
DEVELOPED IN THE 1930S TO INVESTIGATE COMPUTABILITY, THE
ENTSCHEIDUNGSPROBLEM, FUNCTION DEFINITION, FUNCTION
APPLICATION, AND RECURSION. MANY FUNCTIONAL
PROGRAMMING LANGUAGES CAN BE VIEWED AS ELABORATIONS
ON THE LAMBDA CALCULUS.
FP HAS ITS ORIGINS IN LAMBDA CALCULUS, A FORMAL SYSTEM
DEVELOPED IN THE 1930S TO INVESTIGATE COMPUTABILITY, THE
ENTSCHEIDUNGSPROBLEM, FUNCTION DEFINITION, FUNCTION
APPLICATION, AND RECURSION. MANY FUNCTIONAL
PROGRAMMING LANGUAGES CAN BE VIEWED AS ELABORATIONS
ON THE LAMBDA CALCULUS.
FP HAS ITS ORIGINS IN LAMBDA CALCULUS, A FORMAL SYSTEM
DEVELOPED IN THE 1930S TO INVESTIGATE COMPUTABILITY, THE
ENTSCHEIDUNGSPROBLEM, FUNCTION DEFINITION, FUNCTION
APPLICATION, AND RECURSION. MANY FUNCTIONAL
PROGRAMMING LANGUAGES CAN BE VIEWED AS ELABORATIONS
ON THE LAMBDA CALCULUS.
9. FOUNDATIONS
FP IS AN APPROACH BASED ON FUNCTION CALLS
OOP FP
Single
Responsability
functions
Open Closed
Principle
functions
Dependecy
Inversion
functions
Factory pattern functions
… …
10. FOUNDATIONS
F(X) = Y
▸ Write predictable functions
FP IS AN APPROACH BASED ON FUNCTION CALLS
▸ Code easier to test
▸ Thread-safe codebase
▸ Features chaining
11. FOUNDATIONS
FP IS AN APPROACH BASED ON FUNCTION CALLS
FP IS AN APPROACH BASED ON PURE FUNCTION CALLS
12. FOUNDATIONS
F(X) = Y
FP IS AN APPROACH BASED ON PURE FUNCTION CALLS
currentDate
20/11/2018
INPUT
tellMeTheTruth(..) ?
OUTPUT
13. FOUNDATIONS
F(X) = Y
FP IS AN APPROACH BASED ON PURE FUNCTION CALLS
currentDate
20/11/2018
INPUT
tellMeTheTruth(..) false
OUTPUT
current date
21/11/2018
14. FOUNDATIONS
F(X) = Y
FP IS AN APPROACH BASED ON PURE FUNCTION CALLS
currentDate
20/11/2018
INPUT
migrationStatus() true
OUTPUT
current date
19/11/2018
15. FOUNDATIONS
F(X) = Y
FP IS AN APPROACH BASED ON PURE FUNCTION CALLS
NOT PURE
NO SIDE EFFECTS, TESTABLE, THREAD SAFE
PURE
16. FOUNDATIONS
F(X) = Y
FP IS AN APPROACH BASED ON PURE FUNCTION CALLS
NOT PURE
NO SIDE EFFECTS, TESTABLE, THREAD SAFE
PURE
17. FOUNDATIONS
F(X) = Y
FP IS AN APPROACH BASED ON PURE FUNCTION CALLS
NOT PURE
NO SIDE EFFECTS, TESTABLE, THREAD SAFE
PURE
18. FOUNDATIONS
FP IS AN APPROACH BASED ON FUNCTION CALLS
FP IS AN APPROACH BASED ON PURE FUNCTION CALLS
FP IS AN APPROACH BASED ON COMPOSITION OF PURE FUNCTION CALLS
19. FOUNDATIONS
FP IS AN APPROACH BASED ON COMPOSITION OF PURE FUNCTION CALLS
f(2) —> 2 * 3 = 6 g(6) —> 6 * 6 = 36
G(F(A)) = B
g(f(2)) ➡ f(2) = 6 ➡ g(6) = 36
20. FOUNDATIONS
FP IS AN APPROACH BASED ON COMPOSITION OF PURE FUNCTION CALLS
FUNCTIONS ARE FIRST CLASS CITIZENS
HIGH ORDER FUNCTIONS
SWIFT SUPPORTS FP
21. FOUNDATIONS
FP IS AN APPROACH BASED ON COMPOSITION OF PURE FUNCTION CALLS
COMPOSITION
22. FOUNDATIONS
FP IS AN APPROACH BASED ON COMPOSITION OF PURE FUNCTION CALLS
F: A —>B G: B —>C
F: INT —>INT G: INT —>INT
F: INT —>INT G: INT —>INT H: INT —>STR
24. FOUNDATIONS
FP IS AN APPROACH BASED ON COMPOSITION OF PURE FUNCTION CALLS
▸ Write predictable functions
▸ Code easier to test
▸ Thread-safe codebase
▸ Features chaining
29. “A monad is just a monoid in the category of
endofunctors”
Someone on Internet
FOUNDATIONS: FUNCTORS & MONADS
30.
31. FOUNDATIONS: FUNCTORS & MONADS
SWIFT OPTIONAL
OPTIONAL IS A “CONTEXT” THAT CAN INCLUDE A VALUE OR NOT
32. FOUNDATIONS: FUNCTORS & MONADS
FUNCTORS
▸ SINCE OPTIONAL IS A “CONTEXT”, WE NEED A WAY TO EXTRACT THE POSSIBLE
VALUE FROM IT
▸ MAP 😍
33. FOUNDATIONS: FUNCTORS & MONADS
FUNCTORS
▸ SINCE OPTIONAL IS A “CONTEXT”, WE NEED A WAY TO EXTRACT THE POSSIBLE
VALUE FROM IT
▸ MAP 😍
OPTIONAL MAP VALUE
34. FOUNDATIONS: FUNCTORS & MONADS
FUNCTORS
OPTIONAL MAP VALUE
A FUNCTOR IS A TYPE THAT CONTAINS A VALUE AND PROVIDES A MAP FUNCTION AS INTERFACE
FUNCTOR MAP VALUE
HINT: OPTIONAL IS A FUNCTOR
FP
35. FOUNDATIONS: FUNCTORS & MONADS
FUNCTORS
A FUNCTOR IS A TYPE THAT CONTAINS A VALUE AND PROVIDES A MAP FUNCTION AS INTERFACE
HINT: OPTIONAL IS A FUNCTOR
▸ Identity Law
▸ Composition Law
36. FOUNDATIONS: FUNCTORS & MONADS
MONADS
A MONAD IS JUST A MONOID IN THE BLA BLA BLA …
▸ Well a monad is just a type on which we can apply flatMap (bind)
FEATURES CHAINING (ON VALUES)
HINT: OPTIONAL IS A MONAD &
40. FOUNDATIONS: FEATURES CHAINING
string
f1 f2 f Out Monad
bool bool bool bool
error error error error
bind return return
FEATURES CHAINING (ON VALUES)
ERROR MANAGEMENT
VS