SlideShare a Scribd company logo
FUNCTIONAL PROGRAMMING IN A
NUTSHELL
Adityo Pratomo (Framework)
TiA PDC’17
HELLO, I’M DIDIT
Chief Academic Officer
Froyo Framework
Jakarta-based IT trainer provider
CTO & Production Manager
Labtek Indie
Bandung-based Digital Product R&D
Company
HELLO, I’M DIDIT
I mainly develop
Interactive graphics,
game, hardware
OVERVIEW
What is functional programming?
Functional programming vs imperative programming
Building block of functional programming
How functional programming will help you?
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)
TOOLS FOR PROGRAMMERS
Software
Frameworks
Programming Language
Programming Paradigm
Functional Programming
"Functional Programming in a Nutshell" by Adityo Pratomo (Froyo Framework)
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
FUNCTIONAL VS IMPERATIVE: AN ANALOGY
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
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)))
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
FUNCTIONAL VS IMPERATIVE
Menghitung nilai terbesar dan rata-rata
dari sebuah data
FUNCTIONAL VS IMPERATIVE
Menghitung nilai terbesar dan rata-rata
dari sebuah data
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
FUNCTIONAL VS IMPERATIVE
Normalize the numbers by:
- Count average
- Increase numbers smaller than average
- Decrease numbers smaller by average
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;
}
}
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));
PURE FUNCTIONS AND FUNCTION COMPOSITION
const albumList = [
{
artist: "Metallica",
title: "Master of Puppets",
year: 1986
},
{
artist: "Metallica",
title: "Black Album",
year: 1990
},
{
artist: "Megadeth",
title: "Rust in Peace",
year: 1990
}
]
const getMetallica = (arr) => arr.filter((item) =>
item.artist === 'Metallica');
const getAlbumIn1990 = (arr) => arr.filter((item) =>
item.year === 1990);
const getMetallicaAlbumIn1990 =
compose(getMetallica, getAlbumIn1990);
console.log(getMetallicaAlbumIn1990(albumList));
//[ { artist: "Metallica", title: "Black Album", year: 1990 }],
"Functional Programming in a Nutshell" by Adityo Pratomo (Froyo Framework)
HOW FUNCTIONAL PROGRAMMING HELPS?
Pure functions
Immutable Data
Create testable software
from the ground up
Reduce bugs Create multithread
application
Create true modular
software
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)
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
MAKE SOMETHING AWESOME!
Thank You
didit@froyo.co.id
didit@labtekindie.com
@kotakmakan

More Related Content

PDF
How to practice functional programming in react
PDF
Java Week6(B) Notepad
PPT
Parceable serializable
PDF
Immutability and pure functions
DOCX
Cambio de bases
PPTX
Evaluation of prefix expression with example
PDF
FunctionalGeekery-RubyConf
PPTX
Synapse india dotnet development overloading operater part 4
How to practice functional programming in react
Java Week6(B) Notepad
Parceable serializable
Immutability and pure functions
Cambio de bases
Evaluation of prefix expression with example
FunctionalGeekery-RubyConf
Synapse india dotnet development overloading operater part 4

What's hot (11)

PPTX
Recursion in c++
PDF
Programming meeting #3
PPTX
Code craftsmanship saturdays second session
PPTX
Curry functions in Javascript
PDF
Passing Parameters using File and Command Line
PDF
Actor, an elegant model for concurrent and distributed computation
PPT
Removal Of Recursion
PPT
functions
PDF
Write a program that initializes an array - of - double and then copies the c...
PPTX
Function composition in Javascript
PPTX
Javascript Function
Recursion in c++
Programming meeting #3
Code craftsmanship saturdays second session
Curry functions in Javascript
Passing Parameters using File and Command Line
Actor, an elegant model for concurrent and distributed computation
Removal Of Recursion
functions
Write a program that initializes an array - of - double and then copies the c...
Function composition in Javascript
Javascript Function
Ad

Similar to "Functional Programming in a Nutshell" by Adityo Pratomo (Froyo Framework) (20)

PPTX
Why functional programming in C# & F#
ODP
Functional programming
PDF
379008-rc217-functionalprogramming
PPTX
Functional Programming in Swift
PPTX
Functional Paradigm.pptx
PDF
Functional Programming for OO Programmers (part 1)
PDF
Introduction to Functional Programming
PDF
Functional Programming
PDF
Functional programming in C++
PDF
Functional Programming Principles & Patterns
PPTX
Functional Programming in JavaScript by Luis Atencio
PPTX
Exploring the Real Power of Functional Programming
PPTX
Thinking Functionally with JavaScript
PDF
Functional programming 101
PDF
Intro to functional programming - Confoo
PDF
Introduction to functional programming
PPTX
When life gives you functions make functional programs!
PDF
Beyond PITS, Functional Principles for Software Architecture
PDF
introtofunctionalprogramming2-170301075633.pdf
PDF
Functional JavaScript Fundamentals
Why functional programming in C# & F#
Functional programming
379008-rc217-functionalprogramming
Functional Programming in Swift
Functional Paradigm.pptx
Functional Programming for OO Programmers (part 1)
Introduction to Functional Programming
Functional Programming
Functional programming in C++
Functional Programming Principles & Patterns
Functional Programming in JavaScript by Luis Atencio
Exploring the Real Power of Functional Programming
Thinking Functionally with JavaScript
Functional programming 101
Intro to functional programming - Confoo
Introduction to functional programming
When life gives you functions make functional programs!
Beyond PITS, Functional Principles for Software Architecture
introtofunctionalprogramming2-170301075633.pdf
Functional JavaScript Fundamentals
Ad

More from Tech in Asia ID (20)

PDF
Sesi Tech in Asia PDC'21.pdf
PDF
"ILO's Work on Skills Development" by Project Coordinators International Labo...
PDF
"Women in STEM: Leveraging Talent in ICT Sector" by Maya Juwita (Executive Di...
PDF
Laporan Kondisi Pendanaan Startup di Indonesia Kuartal Ketiga Tahun 2018
PDF
LinkedIn Pitch Deck
PDF
Laporan Kondisi Pendanaan Startup di Indonesia Kuartal Kedua Tahun 2018
PDF
Laporan Kondisi Pendanaan Startup di Indonesia Kuartal Pertama Tahun 2018
PDF
Laporan Kondisi Pendanaan Startup di Indonesia Tahun 2017
PDF
"Less Painful iOS Development" by Samuel Edwin (Tokopedia)
PDF
"Product Development Story Loket.com" by Aruna Laksana (Loket.com)
PDF
"Making Data Actionable" by Budiman Rusly (KMK Online)
PDF
"DOKU under the hood : Infrastructure and Cloud Services Technology" by M. T...
PPTX
Citcall : Real-Time User Verification with Missed-Call Based OTP
PDF
"Building High Performance Search Feature" by Setyo Legowo (UrbanIndo)
PDF
"Building Effective Developer-Designer Relationships" by Ifnu Bima (Blibli.com)
PDF
"Data Informed vs Data Driven" by Casper Sermsuksan (Kulina)
PDF
"Planning Your Analytics Implementation" by Bachtiar Rifai (Kofera Technology)
PDF
"How To Build and Lead a Winning Data Team" by Cahyo Listyanto (Bizzy.co.id)
PDF
"How Scrum Motivates People" by Rudy Rahadian (XL Axiata)
PDF
"Control Your Mobile Development Cost" by Ray Rizaldy (GITS.ID)
Sesi Tech in Asia PDC'21.pdf
"ILO's Work on Skills Development" by Project Coordinators International Labo...
"Women in STEM: Leveraging Talent in ICT Sector" by Maya Juwita (Executive Di...
Laporan Kondisi Pendanaan Startup di Indonesia Kuartal Ketiga Tahun 2018
LinkedIn Pitch Deck
Laporan Kondisi Pendanaan Startup di Indonesia Kuartal Kedua Tahun 2018
Laporan Kondisi Pendanaan Startup di Indonesia Kuartal Pertama Tahun 2018
Laporan Kondisi Pendanaan Startup di Indonesia Tahun 2017
"Less Painful iOS Development" by Samuel Edwin (Tokopedia)
"Product Development Story Loket.com" by Aruna Laksana (Loket.com)
"Making Data Actionable" by Budiman Rusly (KMK Online)
"DOKU under the hood : Infrastructure and Cloud Services Technology" by M. T...
Citcall : Real-Time User Verification with Missed-Call Based OTP
"Building High Performance Search Feature" by Setyo Legowo (UrbanIndo)
"Building Effective Developer-Designer Relationships" by Ifnu Bima (Blibli.com)
"Data Informed vs Data Driven" by Casper Sermsuksan (Kulina)
"Planning Your Analytics Implementation" by Bachtiar Rifai (Kofera Technology)
"How To Build and Lead a Winning Data Team" by Cahyo Listyanto (Bizzy.co.id)
"How Scrum Motivates People" by Rudy Rahadian (XL Axiata)
"Control Your Mobile Development Cost" by Ray Rizaldy (GITS.ID)

Recently uploaded (20)

PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Electronic commerce courselecture one. Pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
cuic standard and advanced reporting.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
A Presentation on Artificial Intelligence
Advanced methodologies resolving dimensionality complications for autism neur...
A comparative analysis of optical character recognition models for extracting...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Network Security Unit 5.pdf for BCA BBA.
gpt5_lecture_notes_comprehensive_20250812015547.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Assigned Numbers - 2025 - Bluetooth® Document
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Electronic commerce courselecture one. Pdf
MIND Revenue Release Quarter 2 2025 Press Release
“AI and Expert System Decision Support & Business Intelligence Systems”
20250228 LYD VKU AI Blended-Learning.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
cuic standard and advanced reporting.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Accuracy of neural networks in brain wave diagnosis of schizophrenia
A Presentation on Artificial Intelligence

"Functional Programming in a Nutshell" by Adityo Pratomo (Froyo Framework)

  • 1. FUNCTIONAL PROGRAMMING IN A NUTSHELL Adityo Pratomo (Framework) TiA PDC’17
  • 2. HELLO, I’M DIDIT Chief Academic Officer Froyo Framework Jakarta-based IT trainer provider CTO & Production Manager Labtek Indie Bandung-based Digital Product R&D Company
  • 3. HELLO, I’M DIDIT I mainly develop Interactive graphics, game, hardware
  • 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)
  • 6. TOOLS FOR PROGRAMMERS Software Frameworks Programming Language Programming Paradigm Functional Programming
  • 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
  • 13. FUNCTIONAL VS IMPERATIVE Menghitung nilai terbesar dan rata-rata dari sebuah data
  • 14. FUNCTIONAL VS IMPERATIVE Menghitung nilai terbesar dan rata-rata dari sebuah data
  • 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));
  • 19. PURE FUNCTIONS AND FUNCTION COMPOSITION const albumList = [ { artist: "Metallica", title: "Master of Puppets", year: 1986 }, { artist: "Metallica", title: "Black Album", year: 1990 }, { artist: "Megadeth", title: "Rust in Peace", year: 1990 } ] const getMetallica = (arr) => arr.filter((item) => item.artist === 'Metallica'); const getAlbumIn1990 = (arr) => arr.filter((item) => item.year === 1990); const getMetallicaAlbumIn1990 = compose(getMetallica, getAlbumIn1990); console.log(getMetallicaAlbumIn1990(albumList)); //[ { artist: "Metallica", title: "Black Album", year: 1990 }],
  • 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