Functional programming is a declarative programming paradigm that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data. It focuses on describing what a computation should do instead of how to do it. Some key aspects of functional programming include pure functions, immutable data, and function composition where smaller functions are combined to create larger functions. Functional programming can help create testable, modular code with reduced bugs by avoiding side effects. It is commonly used for data processing and front-end development using languages like Elixir, Clojure, Haskell, and Elm.
4. OVERVIEW
What is functional programming?
Functional programming vs imperative programming
Building block of functional programming
How functional programming will help you?
5. PROGRAMMING
programmer source code computer
Co-workers
Thoughts
into codes
Codes into
instructions
Read code
for analysis
Programmers are required
to instruct machine and
communicate to humans
WHILE solving problems
according to set of rules
(languages, frameworks,
hardware architecture, and
so forth)
8. Functional programming 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.
It is a declarative programming paradigm, which means programming is
done with expressions or declarations instead of statements.
treats computation as the evaluation of mathematical functions and avoids
changing-state and mutable data
10. MI REBUS: THE IMPERATIVE WAY
1. Pour water into saucepan
2. Turn on stove to boil the water
3. After the water boils, insert the noodle
4. Add seasonings
5. Cook for 3 minutes
6. Pour noodle from the saucepan along with the soup to a bowl
11. MI REBUS: THE FUNCTIONAL WAY
1. Mi rebus components:
i. Boiling water
ii. Cooked noodle and seasonings
iii. Served noodle on bowl
2. Compositions of components:
i. Serve(cooked(boiled(noodle and seasonings)))
12. FUNCTIONAL VS IMPERATIVE
1. Pour water into saucepan
2. Turn on stove to boil the water
3. After the water boils, insert the
noodle
4. Add seasonings
5. Cook for 3 minutes
6. Pour noodle from the saucepan along
with the soup to a bowl
1. Mi rebus components:
i. Boiling water
ii. Cooked noodle and seasonings
iii. Served noodle on bowl
2. Compositions of components:
i. Serve(cooked(boiled(noodle and
seasonings)))
Imperative:
1. Focuses on HOW to do things
2. A set of sequential instructions
3. Depends on state to operate
4. Not necessarily reusable, each new
product might require using set of new
instructions
Functional:
1. Focuses on WHAT is a thing
2. Composing set of functions, each
functions has a clear result
3. Not depends on state
4. Each functions can be reused by
including in different compositions
15. FUNCTIONAL VS IMPERATIVE
• Functions are being used to describe a step-
by step instructions of doing things
• Relies on for loop
• Involves temporary mutable variable to store
state
• Functions are being used to describe a
desired result from an operation
• Relies on array method
• No mutable variable and no state
16. FUNCTIONAL VS IMPERATIVE
Normalize the numbers by:
- Count average
- Increase numbers smaller than average
- Decrease numbers smaller by average
17. BUILDING BLOCKS OF FUNCTIONAL
PROGRAMMING
1. Immutable data
A data whose value(s) can’t be change
2. Pure function
A function whose return value is only
determined by its input values, without
observable side effects
Produce the same output when
processing the same input
const myData = [51, 72, 38, 94];
function isEven (x) {
if (x % 2 == 0) {
return true;
}
}
18. PURE FUNCTIONS AND FUNCTION COMPOSITION
Always returns a function or value
A reusable building block of a program
Several functions can be composed to do
data processing, creating a new function
f(x) => y
g(x) => z
f o g (x) = f(g(x))
function compose (f, g) {
return function (x) {
return f(g(x));
}
}
function add2(x) {
return x + 2;
}
function multiply4(x) {
return x*4;
}
var add2Multiply4 = compose(add2, multiply4);
console.log(add2Multiply4(2));
21. HOW FUNCTIONAL PROGRAMMING HELPS?
Pure functions
Immutable Data
Create testable software
from the ground up
Reduce bugs Create multithread
application
Create true modular
software
22. WHERE CAN I USE IT?
-Back end:
- Various data processing and simulation (Scala, Haskell, Clojure, Elixir, Erlang, etc.)
-Front end:
- One way data rendering (Elm)
-Anywhere:
- Code in your favourite language using functional programming style (C#, C++, JavaScript, Python)
23. LAST NOTE
Pure functional programming have no side effects
Real world application relies on side effects for I/O operation
Use functional style to manage the side effects
Functional programming doesn’t use state
Game programing relies on state to manage the game (level, progressions, health, etc)
Use state to manage, but inner operations can still use FP