KEMBAR78
Functional Programming with JavaScript | PPTX
Functional Programming
With JavaScript
In the beginning, God created “Programming
paradigms” in 7 days (Genesis 101)👼
Imperative Programming
Procedure Programming
Object Oriented Programming
Functional Programming
~ a coding style / a way of thinking
တူတတောော်တ ောငော်တ ို့
တ ေးတေတောပဲ ဘောထူေးလ ို့လဲ
Q: Don’t we write functions in every language ?
A: But functional programming take it to a whole another level
Def : Break any complex problem down into smaller sub-problems, solve them
using functions, and finally combine them together to solve the bigger
problem.
ဘယော်သူတတွေသေးလ ို့လဲ
F#, C# (.NETs)
Lisp & Perl (grandpas)
Erlang , Elixir & Haskell (hotshots)
Clojure & Scala (JVMs)
D, R, JS, Python, … (sexies)
Why FP in JavaScript
The root of all evil is “this” keyword 😈
Object.prototype
OOP in JS is like sugar coated paracetamol 💊
.call .apply .bind // anyone ?
Input => process => output
f(x) = x * x // function (x) { return x * x }
g(f(x))
“ Programmer think of their programs more
as pipes for data to travel through just like
we did in Math “
Source ~ wellesley.edu
Imperative
let name = “azb”
let greeting = “Hello, I’m ”
console.log(greeting + name)
function greeting(name){
return “Hello, I’m ” + name
}
greeting(“azb”)
Functional
First-class citizen အခွေငော်ို့ထူေးခ လူတေော်ေးစောေး
Treat like other values
Pass around arguments and return as value
Define and manipulate functions from other functions
Reference from variable or self
Side Effects
Changing the value of a variable (parent/ global), OBVIOUSLY
Writing some data to disk, file, console, network
Manipulating of UI
Calling external process
Generally - STATE CHANGED
Pure functions (no side effects)
High-order function (return)
High-order function (accept)
Referential transparency
function add(a, b) { return a + b }
add(add(2, 3), add(4, 1))
add((2 + 3), add(4, 1))
add((2 + 3), (4 + 1))
(2 + 3) + (4 + 1)
Don’t LOOP (stream of data / HO funs)
.forEach
.map
.reduce
.filter
Immutability is bad
.pop .push
.shift .unshift
let a = 1
a = “hello world”
Persistent data structures
var, let, const right ? ahuh not really
Wait a min Object.freeze Object.seal
MORI
IMMUTABLE (sponsored by facebook)
Underscore
Lodash
Ramda
More FP
Currying
Tail Recursion
Pattern matching
Infinite data structure
Composition
Lazy evaluation
self.Q&A
Concurrency
Parallelism
Async
READABLE, EASY TO UNDERSTAND,
REUSABLE
Writing with a larger team
Application larger than a todo app
Performance are not critical
You have to support the project
P.S
1. I/O is tricky in FP
2. Code LineNums are just a number
3. There’s no single true paradigm
Aung Zan Baw - တအောငော်ဇတဘောော်
Web developer (Fairway Technology)
Links
Slides - https://goo.gl/3fmMXk
Best FP in JS - https://goo.gl/IqmkoT
ReactiveX !!!
Starter book - https://goo.gl/ctmBTo

Functional Programming with JavaScript

Editor's Notes

  • #3 Imperative programming where programs are composed of statements which change global state when executed. Programmer act like human, left to right, top to bottom Object Oriented programming where the structures storing your data are the focus of your programming. Programmer spend most of their time thinking how to model your data using objects
  • #7 Stream of data (each item) Prototype base language Java-like OOP syntax via es6 NOT a FP
  • #16 In Connection-oriented communication, a data stream
  • #17 Instead of altering existing values, altered copies are created and the original is preserved