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