Composition

Functional Programming in JavaScript 

JavaScript functional programming intro

funcational programming

funcational programming

why?

more TESTable & Bug FREE (DESBUG)

SELF-DOCUMENTing

funcational programming

CORE

+ first class function

+ pure function

+ curry

+ compose

Intro

Imperative &
Declarative

Imperative

Declarative

Focusing on statements that change program state by telling computer how to do that.

Describing what you're trying to achieve, without instructing how to do it. 

paradigms

Imperative

paradigms

Imperative

Imperative

DECLARATIVE

paradigms

Haskell, F#, Lisp

Declarative

Declarative

First Class Function

  • treat function like a normal data type.

Fundamental

  • FUNCTION CAN BE PASSED AS A DATA.

refs: https://stackoverflow.com/questions/705173/what-is-meant-by-first-class-object?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

First Class Function

Fundamental

  • CONSTRUCTING NEW FUNCTIONS DURING THE EXECUTION OF A PROGRAM.

  • STORING THEM IN DATA STRUCTURES

  • PASSING THEM AS ARGUMENTS TO OTHER FUNCTIONS

  • RETURNING THEM AS THE VALUES OF OTHER FUNCTIONS

  • NO SIDE EFFECTS (MUTATIONS, QUERYING THE DOM ...)

  • ALWAYS RETURNS THE SAME RESULT IF THE SAME ARGUMENTS ARE PASSED IN.

PURE FUNCTION

Fundamental

+ Cacheable

+ Portable / Self-Documenting

+ Testable

+ Reasonable

PURE FUNCTION

Fundamental

PURE FUNCTION

Fundamental

PURE

impure

PURE FUNCTION

Fundamental

impure (OOP)

keep state to object self and send/receive
Messages

Cacheable

https://codepen.io/guAnsunyata/pen/zWQNxq?editors=0012

PURE FUNCTION

Fundamental

Portable

PURE FUNCTION

Fundamental

ref without external state

Redux - Reducer

Time Control /
EVENT SOURCING

PURE FUNCTION

Fundamental

CURRY

Fundamental

  • FUNCTION RETURNS A FUNCTION THAT TAKES THE REMAINING ARGUMENTS

CURRY

Fundamental

Ramda

CURRY

Fundamental

(husbandry)

https://drboolean.gitbooks.io/mostly-adequate-guide-old/content/ch5.html#functional-husbandry

COMPOSITE

Fundamental

"love is never having to say you're sorry"

pointfree is never having to say your data

COMPOSITE

Fundamental

  • FIRST CLASS FUNCTIONS, CURRYING, AND COMPOSITION ALL PLAY WELL TOGETHER TO CREATE THIS STYLE.

POINTFREE

POINTFREE

COMPOSITE

Fundamental

https://medium.freecodecamp.org/elegant-patterns-in-modern-javascript-roro-be01e7669cbd

PIPE

PIPE

EXAMPLE IN ML PROJECT

Next?

Thanks

Composition

By guansunyata

Composition

  • 551