Introduction to Functional
Programming with JavaScript
Introduction
Farzaneh Orak
Software Engineer
Hunter Industries
Mob programming
Goal
FP and OOP
Object-Oriented ProgrammingFunctional Programming
JavaScript language
• Multi-paradigm
• First class function
Which one is better?
• Depend on what are you trying to do
• Michael Fogus author of “Functional Javascript”
• Deal with data about people -> FP
• Simulate people -> Object-Oriented Programming
When we use functional
• People simulation
• Shared state
• Data about people
• Avoid shared state
What is Functional programming?
• Programming paradigm
• Style-organizing coding
• Way of thinking
• Express everything in term of functions
• Declarative
Why functional programming?
• Increase readability and maintainability
• Function reusability
• Easier testing and debug
• Needs low brain power to read the code
Why functional programming?
• Elegant code
• Predictability
• Less complex
Functional Programming principles
• Avoid sharing state
• Avoid side effect
• Avoid data mutation
Avoid sharing state
Avoid side effect
• Console log
• Writing to a file
Avoid data mutation
• Once object created it can’t be changed
Functional Programming Techniques
• Pure function
• Higher order function
Functional Programming principles
• Pure functions
• Given the same input, It always returns the same output
Impure vs Pure functions
Pure functional- Avoid sharing state
Pure functional- Avoid side effect
Functional Programming Techniques
• Higher order function
• Function composition
• Functions re-usability
• Function currying
Functional Programming Techniques
• Higher order functions
• Pass functions as arguments or return functions
Higher Order Functions
Function composition
Function Currying
Higher order functions
• Map
• Filter
• Reduce
Map
• Avoid data mutation
Map example
Reduce
• Higher order function
• Works on variety of datatype
Reduce
Filter
• Avoid data mutation
Higher order function-Filter
Higher order function-composition
Function composition
Trie data structure
• Trie data structure
• Structural sharing
Trie data structure
6 242 64 5
Libraries
• JFP
• Ramda
• Lodashfp
• Mori
• Immutable js
Recap
• Functional Programming Principles
• Avoid shared state
• Avoid side affect
• Avoid data mutation
• Functional Programming Techniques
• Pure function
• Higher order functions
Thank you!
Farzaneh Orak
linkedin.com/in/farzanehorak
@FarzanehOrak

Introduction to functional programming with JavaScript