+ All Categories
Home > Technology > Functional programming with ES6

Functional programming with ES6

Date post: 14-Apr-2017
Category:
Upload: mailjet
View: 524 times
Download: 0 times
Share this document with a friend
43
Functional Programming with ES6 Guillaume Badi • 25.11.2015
Transcript
Page 1: Functional programming with ES6

Functional Programming with ES6

Guillaume Badi • 25.11.2015

Page 2: Functional programming with ES6

Me ?

Developer Evangelist @Mailjet

Student @42

Node.JS fanboy

Autodidact

Twitter: @WeshGuillaume

Page 3: Functional programming with ES6

This is the Government

(l’état, c’est moi)

Page 4: Functional programming with ES6
Page 5: Functional programming with ES6

Documents

Money

Page 6: Functional programming with ES6

When the money comes from the “Companies”, we have a set of rules describing the way it has to be distributed.

Page 7: Functional programming with ES6

The hierarchical approach makes it easy to visualize but hard to improve.

Page 8: Functional programming with ES6

Problems

Nobody fully understands it

It requires tons of people to maintain

Adding new institutions is a pain

Changing something in one area requires changes in many other areas

Page 9: Functional programming with ES6

Economists call it Bureaucracy

Page 10: Functional programming with ES6

We call it Object Oriented programming

Page 11: Functional programming with ES6

This is a structured mess

Page 12: Functional programming with ES6

We want a function that takes the existing agents and returns new ones, when the money comes in.

Page 13: Functional programming with ES6

Documents

Money

Page 14: Functional programming with ES6

We could model it differently.

Companies1

Population1

Government1

Companies2

Population2

Government2

Page 15: Functional programming with ES6

“It's not who I am underneath, but what I do that defines me.” - The Batman

Page 16: Functional programming with ES6

Object Oriented Programming is good at describing things

Page 17: Functional programming with ES6

Describing data.

Page 18: Functional programming with ES6

Describing patterns

Page 19: Functional programming with ES6

And by extension…

CAF = (salary, rent) => [Function]

Pole Emploi = (workPeriod) => [Function]

Institutions = (salary, rent, workPeriod) => [Function]

Page 20: Functional programming with ES6

We want to “transform” our data, the mathematical way.

Page 21: Functional programming with ES6

Functions should be pure. Understand “context-free”.

Page 22: Functional programming with ES6

Functions are data that operate on some other data. It makes your code easy to test

Page 23: Functional programming with ES6

Why is ES6 good for the Job ?

Page 24: Functional programming with ES6

Function syntax is now short and clear

Page 25: Functional programming with ES6

Returning functions is pure poetry

Page 26: Functional programming with ES6

Same code in Go

Page 27: Functional programming with ES6

Promises. comma.

Page 28: Functional programming with ES6

Promises. period.

Page 29: Functional programming with ES6

A lot of people just hate JavaScript

Page 30: Functional programming with ES6
Page 31: Functional programming with ES6

But precisely with this syntax, We have the choice to adopt a Java coding style...

Flatten a nested array

Page 32: Functional programming with ES6

...Or a cleaner functional style

Page 33: Functional programming with ES6

Functional programming is not simple. It requires

discipline and… meditation

Page 34: Functional programming with ES6
Page 35: Functional programming with ES6

Immutable data is one of the keys

Page 36: Functional programming with ES6
Page 37: Functional programming with ES6

Use map/filter/reduce when you can

Page 38: Functional programming with ES6

If you have to use the words “and” or “then”, to describe your function, split it.

Page 39: Functional programming with ES6

Documents

Money

Page 40: Functional programming with ES6

We could model it differently.

Companies1

Population1

Government1

Companies2

Population2

Government2

Page 41: Functional programming with ES6
Page 42: Functional programming with ES6
Page 43: Functional programming with ES6

Merci

Github: GuillaumebadiTwitter: @WeshGuillaume


Recommended