SlideShare a Scribd company logo
1 of 78
Download to read offline
Building
Functional
Islands
Audience
Participation
What is Functional
Programming?
Statements
const nums = [1, 2, 3];
const doubled = [];
for (let i = 0; i < nums.length; i++) {
doubled.push(nums[i] * 2);
}
Statements
const nums = [1, 2, 3];
const doubled = [];
for (let i = 0; i < nums.length; i++) {
doubled.push(nums[i] * 2);
}
Statements
const nums = [1, 2, 3];
const doubled = [];
for (let i = 0; i < nums.length; i++) {
doubled.push(nums[i] * 2);
}
Statements
const nums = [1, 2, 3];
const doubled = [];
for (let i = 0; i < nums.length; i++) {
doubled.push(nums[i] * 2);
}
function double(x) {
return x * 2;
}
map([1, 2, 3], double);
Expressions
function double(x) {
return x * 2;
}
map([1, 2, 3], double);
// [(1 * 2), (2 * 2), (3 * 2)]
Expressions
function double(x) {
return x * 2;
}
map([1, 2, 3], double);
// [(1 * 2), (2 * 2), (3 * 2)]
// [2, 4, 6]
Expressions
Why Functional
Programming?
Functions
Island Building Block #1
First-Class Functions
function onClick() {
// I'm a first-class function
}
document.body.addEventListener('click', onClick);
function onClick() {
// I get called by a higher-order function
}
document.body.addEventListener('click', onClick);
Higher-Order Functions
Higher-Order Functions
function logify(fn) {
return (...args) => {
console.log(args);
return fn(...args);
};
}
const logifyAdd = logify(add);
function add(x, y) {
return x + y;
}
Higher-Order Functions
function logify(fn) {
return (...args) => {
console.log(args);
return fn(...args);
};
}
const logifyAdd = logify(add);
function add(x, y) {
return x + y;
}
Higher-Order Functions
function logify(fn) {
return (...args) => {
console.log(args);
return fn(...args);
};
}
const logifyAdd = logify(add);
function add(x, y) {
return x + y;
}
Higher-Order Functions
const logifyAdd = logify(add);
logifyAdd(1, 2);
// [1, 2]
// 3
Higher-Order
Functions
The Benefits
Pure Functions
function add(x, y) {
// I'm a pure function
return x + y;
}
Pure Functions
add(1, 2) + add(3, 4);
Pure Functions
add(1, 2) + add(3, 4);
// 3 + add(3, 4);
Pure Functions
add(1, 2) + add(3, 4);
// 3 + add(3, 4);
// 3 + 7;
Pure Functions
add(1, 2) + add(3, 4);
// 3 + add(3, 4);
// 3 + 7;
// 10;
function addAndSomethingElse(x, y) {
// I'm an impure function
doSomethingElse();
return x + y;
}
Pure Functions
Pure Functions
addAndSomethingElse(1, 2)
// ???
Pure Functions
The Benefits
Pure Functions
The Reality
Immutability
Island Building Block #2
Immutable values
const nums = [1, 2, 3];
const person = { name: 'mark', age: 29 };
nums[0] = 2;
// [2, 2, 3]
person.age = 27;
// { name: 'mark', age: 27 }
Immutable values
const nums = [1, 2, 3];
const person = { name: 'mark', age: 29 };
nums[0] = 2;
// [2, 2, 3]
person.age = 27;
// { name: 'mark', age: 27 }
Immutable values
const nums = [1, 2, 3];
const person = { name: 'mark', age: 29 };
nums[0] = 2;
// [2, 2, 3]
person.age = 27;
// { name: 'mark', age: 27 }
Immutable values
const nums = [1, 2, 3];
const person = { name: 'mark', age: 29 };
nums[0] = 2;
// [2, 2, 3]
person.age = 27;
// { name: 'mark', age: 27 }
Object.freeze
const nums = Object.freeze([1, 2, 3]);
const person =
Object.freeze({ name: 'mark', age: 29 });
nums[0] = 2;
// [1, 2, 3]
person.age = 27;
// { name: 'mark', age: 29 }
Object.freeze
const nums = Object.freeze([1, 2, 3]);
const person =
Object.freeze({ name: 'mark', age: 29 });
nums[0] = 2;
// [1, 2, 3]
person.age = 27;
// { name: 'mark', age: 29 }
Object.freeze
const nums = Object.freeze([1, 2, 3]);
const person =
Object.freeze({ name: 'mark', age: 29 });
nums[0] = 2;
// [1, 2, 3]
person.age = 27;
// { name: 'mark', age: 29 }
Object.freeze
const employee = Object.freeze({
department: 'Eng',
profile: {
name: 'mark',
age: 29
}
});
employee.profile.age = 27;
// {...{ name: 'mark', age: 27 } }
Object.freeze
const employee = Object.freeze({
department: 'Eng',
profile: {
name: 'mark',
age: 29
}
});
employee.profile.age = 27;
// {...{ name: 'mark', age: 27 } }
Object.freeze
const employee = Object.freeze({
department: 'Eng',
profile: {
name: 'mark',
age: 29
}
});
employee.profile.age = 27;
// {...{ name: 'mark', age: 27 } }
deepFreeze
const employee = deepFreeze({
department: 'Eng',
profile: {
name: 'mark',
age: 29
}
});
employee.profile.age = 27;
// {...{ name: 'mark', age: 29 } }
Immutability
The Benefits
Immutability
The Reality
Currying
Island Building Block #3
Currying
const add = curry((x, y) => {
return x + y;
});
const succ = add(1);
succ(1);
// 2
Currying
const add = curry((x, y) => {
return x + y;
});
const succ = add(1);
succ(1);
// 2
Currying
const add = curry((x, y) => {
return x + y;
});
const succ = add(1);
succ(1);
// 2
Currying
const devs = [
{ firstName: 'mark' },
{ firstName: 'sally' }
];
const firstNames = map(devs, (dev) => {
return dev.firstName;
});
Currying
const devs = [
{ firstName: 'mark' },
{ firstName: 'sally' }
];
const firstNames = map(devs, (dev) => {
return dev.firstName;
});
Currying
const devs = [
{ firstName: 'mark' },
{ firstName: 'sally' }
];
const firstNames = map(devs, (dev) => {
return dev.firstName;
});
Currying
const devs = [
{ firstName: 'mark' },
{ firstName: 'sally' }
];
const getFirstNames = map(prop('firstName'));
const firstNames = getFirstNames(devs);
Currying
const devs = [
{ firstName: 'mark' },
{ firstName: 'sally' }
];
const getFirstNames = map(prop('firstName'));
const firstNames = getFirstNames(devs);
Currying
const devs = [
{ firstName: 'mark' },
{ firstName: 'sally' }
];
const getFirstNames = map(prop('firstName'));
const firstNames = getFirstNames(devs);
Currying
const devs = [
{ firstName: 'mark' },
{ firstName: 'sally' }
];
const getFirstNames = map(prop('firstName'));
const firstNames = getFirstNames(devs);
Currying
The Benefits
Currying
The Reality
Composition
Island Building Block #4
Composition
const value = 1;
const gRes = g(value);
const fgRes = f(gRes);
Composition
const value = 1;
const gRes = g(value);
const fgRes = f(gRes);
Composition
const value = 1;
const gRes = g(value);
const fgRes = f(gRes);
Composition
const value = 1;
const gRes = g(value);
const fgRes = f(gRes);
Composition
function fg(x) {
return f(g(x));
}
fg(1);
Composition
const fg = compose(f, g);
fg(1);
Composition
function getFilmIdsFromResponse(resp) {
return getIds(getFilms(JSON.parse(resp)));
}
getFilmIdsFromResponse('{ "films": [{ id: 1 },
...], "actors": [...] }');
Composition
function getFilmIdsFromResponse(resp) {
return getIds(getFilms(JSON.parse(resp)));
}
getFilmIdsFromResponse('{ "films": [{ id: 1 },
...], "actors": [...] }');
Composition
function getFilmIdsFromResponse(resp) {
return getIds(getFilms(JSON.parse(resp)));
}
getFilmIdsFromResponse('{ "films": [{ id: 1 },
...], "actors": [...] }');
Composition
function getFilmIdsFromResponse(resp) {
return getIds(getFilms(JSON.parse(resp)));
}
getFilmIdsFromResponse('{ "films": [{ id: 1 },
...], "actors": [...] }');
Composition
function getFilmIdsFromResponse(resp) {
return getIds(getFilms(JSON.parse(resp)));
}
getFilmIdsFromResponse('{ "films": [{ id: 1 },
...], "actors": [...] }');
Composition
const getIds = map(prop('id'));
const getFilmIdsFromResponse =
compose(getIds, prop('films'), JSON.parse);
getFilmIdsFromResponse('{ "films": [...],
"actors": [...] }');
Composition
const getIds = map(prop('id'));
const getFilmIdsFromResponse =
compose(getIds, prop('films'), JSON.parse);
getFilmIdsFromResponse('{ "films": [...],
"actors": [...] }');
Composition
const getIds = map(prop('id'));
const getFilmIdsFromResponse =
compose(getIds, prop('films'), JSON.parse);
getFilmIdsFromResponse('{ "films": [...],
"actors": [...] }');
Composition
const getIds = map(prop('id'));
const getFilmIdsFromResponse =
compose(getIds, prop('films'), JSON.parse);
getFilmIdsFromResponse('{ "films": [...],
"actors": [...] }');
Composition
const getIds = map(prop('id'));
const getFilmIdsFromResponse =
compose(getIds, prop('films'), JSON.parse);
getFilmIdsFromResponse('{ "films": [...],
"actors": [...] }');
Composition
The Benefits
Composition
The Reality
I’m confused.
What’s a functional
island again?
Further reading / watch list (free)
https://drboolean.gitbooks.io/mostly-adequate-guide/content/
Professor Frisby's Mostly Adequate Guide to Functional Programming
http://ramdajs.com/
A practical functional library for Javascript programmers
https://github.com/lodash/lodash/wiki/FP-Guide
lodash/fp guide
https://www.youtube.com/watch?v=m3svKOdZijA
Hey Underscore, You're Doing It Wrong!
https://github.com/substack/deep-freeze
deepFreeze
Further reading / watch list (paid)
https://frontendmasters.com/courses/functional-js-lite/
Functional Lite JavaScript
https://frontendmasters.com/courses/functional-javascript/
Hardcore Functional Programming in JavaScript
Thank you.
@mark_ jones

More Related Content

What's hot

Functional JS for everyone - 4Developers
Functional JS for everyone - 4DevelopersFunctional JS for everyone - 4Developers
Functional JS for everyone - 4DevelopersBartek Witczak
 
The Ring programming language version 1.6 book - Part 66 of 189
The Ring programming language version 1.6 book - Part 66 of 189The Ring programming language version 1.6 book - Part 66 of 189
The Ring programming language version 1.6 book - Part 66 of 189Mahmoud Samir Fayed
 
Rデバッグあれこれ
RデバッグあれこれRデバッグあれこれ
RデバッグあれこれTakeshi Arabiki
 
Rのスコープとフレームと環境と
Rのスコープとフレームと環境とRのスコープとフレームと環境と
Rのスコープとフレームと環境とTakeshi Arabiki
 
The Ring programming language version 1.2 book - Part 45 of 84
The Ring programming language version 1.2 book - Part 45 of 84The Ring programming language version 1.2 book - Part 45 of 84
The Ring programming language version 1.2 book - Part 45 of 84Mahmoud Samir Fayed
 
The Ring programming language version 1.3 book - Part 43 of 88
The Ring programming language version 1.3 book - Part 43 of 88The Ring programming language version 1.3 book - Part 43 of 88
The Ring programming language version 1.3 book - Part 43 of 88Mahmoud Samir Fayed
 
Introduction to Gremlin
Introduction to GremlinIntroduction to Gremlin
Introduction to GremlinMax De Marzi
 
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料Ken'ichi Matsui
 
The Ring programming language version 1.6 book - Part 67 of 189
The Ring programming language version 1.6 book - Part 67 of 189The Ring programming language version 1.6 book - Part 67 of 189
The Ring programming language version 1.6 book - Part 67 of 189Mahmoud Samir Fayed
 
Quadratic Expressions
Quadratic ExpressionsQuadratic Expressions
Quadratic Expressions2IIM
 
The Ring programming language version 1.3 book - Part 46 of 88
The Ring programming language version 1.3 book - Part 46 of 88The Ring programming language version 1.3 book - Part 46 of 88
The Ring programming language version 1.3 book - Part 46 of 88Mahmoud Samir Fayed
 
Everything is composable
Everything is composableEverything is composable
Everything is composableVictor Igor
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
The Ring programming language version 1.5.1 book - Part 57 of 180
The Ring programming language version 1.5.1 book - Part 57 of 180The Ring programming language version 1.5.1 book - Part 57 of 180
The Ring programming language version 1.5.1 book - Part 57 of 180Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 61 of 180
The Ring programming language version 1.5.1 book - Part 61 of 180The Ring programming language version 1.5.1 book - Part 61 of 180
The Ring programming language version 1.5.1 book - Part 61 of 180Mahmoud Samir Fayed
 
Pymongo for the Clueless
Pymongo for the CluelessPymongo for the Clueless
Pymongo for the CluelessChee Leong Chow
 

What's hot (20)

Functional JS for everyone - 4Developers
Functional JS for everyone - 4DevelopersFunctional JS for everyone - 4Developers
Functional JS for everyone - 4Developers
 
The Ring programming language version 1.6 book - Part 66 of 189
The Ring programming language version 1.6 book - Part 66 of 189The Ring programming language version 1.6 book - Part 66 of 189
The Ring programming language version 1.6 book - Part 66 of 189
 
Rデバッグあれこれ
RデバッグあれこれRデバッグあれこれ
Rデバッグあれこれ
 
Rのスコープとフレームと環境と
Rのスコープとフレームと環境とRのスコープとフレームと環境と
Rのスコープとフレームと環境と
 
ES6(ES2015) is beautiful
ES6(ES2015) is beautifulES6(ES2015) is beautiful
ES6(ES2015) is beautiful
 
The Ring programming language version 1.2 book - Part 45 of 84
The Ring programming language version 1.2 book - Part 45 of 84The Ring programming language version 1.2 book - Part 45 of 84
The Ring programming language version 1.2 book - Part 45 of 84
 
Academy PRO: ES2015
Academy PRO: ES2015Academy PRO: ES2015
Academy PRO: ES2015
 
The Ring programming language version 1.3 book - Part 43 of 88
The Ring programming language version 1.3 book - Part 43 of 88The Ring programming language version 1.3 book - Part 43 of 88
The Ring programming language version 1.3 book - Part 43 of 88
 
Corona sdk
Corona sdkCorona sdk
Corona sdk
 
Introduction to Gremlin
Introduction to GremlinIntroduction to Gremlin
Introduction to Gremlin
 
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
 
The Ring programming language version 1.6 book - Part 67 of 189
The Ring programming language version 1.6 book - Part 67 of 189The Ring programming language version 1.6 book - Part 67 of 189
The Ring programming language version 1.6 book - Part 67 of 189
 
Quadratic Expressions
Quadratic ExpressionsQuadratic Expressions
Quadratic Expressions
 
The Ring programming language version 1.3 book - Part 46 of 88
The Ring programming language version 1.3 book - Part 46 of 88The Ring programming language version 1.3 book - Part 46 of 88
The Ring programming language version 1.3 book - Part 46 of 88
 
Everything is composable
Everything is composableEverything is composable
Everything is composable
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
Pemrograman Terstruktur 3
Pemrograman Terstruktur 3Pemrograman Terstruktur 3
Pemrograman Terstruktur 3
 
The Ring programming language version 1.5.1 book - Part 57 of 180
The Ring programming language version 1.5.1 book - Part 57 of 180The Ring programming language version 1.5.1 book - Part 57 of 180
The Ring programming language version 1.5.1 book - Part 57 of 180
 
The Ring programming language version 1.5.1 book - Part 61 of 180
The Ring programming language version 1.5.1 book - Part 61 of 180The Ring programming language version 1.5.1 book - Part 61 of 180
The Ring programming language version 1.5.1 book - Part 61 of 180
 
Pymongo for the Clueless
Pymongo for the CluelessPymongo for the Clueless
Pymongo for the Clueless
 

Viewers also liked

Bm brandsters grp7_sec_a
Bm brandsters grp7_sec_aBm brandsters grp7_sec_a
Bm brandsters grp7_sec_aRahul Ranjan
 
brisa_catalina_presentació_COMPETIC2_CFA_Lapau
brisa_catalina_presentació_COMPETIC2_CFA_Lapaubrisa_catalina_presentació_COMPETIC2_CFA_Lapau
brisa_catalina_presentació_COMPETIC2_CFA_Lapaucompetic2torina
 
Maryluz Gamarra 4ºC
Maryluz Gamarra 4ºCMaryluz Gamarra 4ºC
Maryluz Gamarra 4ºCPaulaYMaryluz
 
Estudantes oriundos da rede pública
Estudantes oriundos da rede públicaEstudantes oriundos da rede pública
Estudantes oriundos da rede públicaeplucasemmanuel
 
Beginners Guide : Google ChromeCast Setup
Beginners Guide : Google ChromeCast SetupBeginners Guide : Google ChromeCast Setup
Beginners Guide : Google ChromeCast SetupEvie Scott
 
Producing Breakthrough Business Results with an Enagaged Workforce
Producing Breakthrough Business Results with an Enagaged WorkforceProducing Breakthrough Business Results with an Enagaged Workforce
Producing Breakthrough Business Results with an Enagaged WorkforceMark Kamin
 
Web 3.0 kelvin granda jason mejia .
Web 3.0 kelvin granda jason mejia .Web 3.0 kelvin granda jason mejia .
Web 3.0 kelvin granda jason mejia .Ksama1955
 
CV WERNER BOTHA 2015
CV WERNER BOTHA 2015CV WERNER BOTHA 2015
CV WERNER BOTHA 2015Werner Botha
 

Viewers also liked (9)

Bm brandsters grp7_sec_a
Bm brandsters grp7_sec_aBm brandsters grp7_sec_a
Bm brandsters grp7_sec_a
 
brisa_catalina_presentació_COMPETIC2_CFA_Lapau
brisa_catalina_presentació_COMPETIC2_CFA_Lapaubrisa_catalina_presentació_COMPETIC2_CFA_Lapau
brisa_catalina_presentació_COMPETIC2_CFA_Lapau
 
Maryluz Gamarra 4ºC
Maryluz Gamarra 4ºCMaryluz Gamarra 4ºC
Maryluz Gamarra 4ºC
 
El reciclaje
El reciclajeEl reciclaje
El reciclaje
 
Estudantes oriundos da rede pública
Estudantes oriundos da rede públicaEstudantes oriundos da rede pública
Estudantes oriundos da rede pública
 
Beginners Guide : Google ChromeCast Setup
Beginners Guide : Google ChromeCast SetupBeginners Guide : Google ChromeCast Setup
Beginners Guide : Google ChromeCast Setup
 
Producing Breakthrough Business Results with an Enagaged Workforce
Producing Breakthrough Business Results with an Enagaged WorkforceProducing Breakthrough Business Results with an Enagaged Workforce
Producing Breakthrough Business Results with an Enagaged Workforce
 
Web 3.0 kelvin granda jason mejia .
Web 3.0 kelvin granda jason mejia .Web 3.0 kelvin granda jason mejia .
Web 3.0 kelvin granda jason mejia .
 
CV WERNER BOTHA 2015
CV WERNER BOTHA 2015CV WERNER BOTHA 2015
CV WERNER BOTHA 2015
 

Similar to Building Functional Islands

Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Tomasz Dziuda
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with GroovyArturo Herrero
 
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6FrontDays
 
Gabriele Petronella - FP for front-end development: should you care? - Codemo...
Gabriele Petronella - FP for front-end development: should you care? - Codemo...Gabriele Petronella - FP for front-end development: should you care? - Codemo...
Gabriele Petronella - FP for front-end development: should you care? - Codemo...Codemotion
 
TypeScript - All you ever wanted to know - Tech Talk by Epic Labs
TypeScript - All you ever wanted to know - Tech Talk by Epic LabsTypeScript - All you ever wanted to know - Tech Talk by Epic Labs
TypeScript - All you ever wanted to know - Tech Talk by Epic LabsAlfonso Peletier
 
ES6, 잘 쓰고 계시죠?
ES6, 잘 쓰고 계시죠?ES6, 잘 쓰고 계시죠?
ES6, 잘 쓰고 계시죠?장현 한
 
ECMAScript 6 and beyond
ECMAScript 6 and beyondECMAScript 6 and beyond
ECMAScript 6 and beyondFrancis Johny
 
CoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairCoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairMark
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs偉格 高
 
Go Says WAT?
Go Says WAT?Go Says WAT?
Go Says WAT?jonbodner
 
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6Dmitry Soshnikov
 
Hello, I need some assistance in writing a java program THAT MUST US.pdf
Hello, I need some assistance in writing a java program THAT MUST US.pdfHello, I need some assistance in writing a java program THAT MUST US.pdf
Hello, I need some assistance in writing a java program THAT MUST US.pdfFashionColZone
 

Similar to Building Functional Islands (20)

Functional JS+ ES6.pptx
Functional JS+ ES6.pptxFunctional JS+ ES6.pptx
Functional JS+ ES6.pptx
 
Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Introduction to ECMAScript 2015
Introduction to ECMAScript 2015
 
Introduction to Groovy
Introduction to GroovyIntroduction to Groovy
Introduction to Groovy
 
Javascript
JavascriptJavascript
Javascript
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
ES2015 New Features
ES2015 New FeaturesES2015 New Features
ES2015 New Features
 
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
 
Gabriele Petronella - FP for front-end development: should you care? - Codemo...
Gabriele Petronella - FP for front-end development: should you care? - Codemo...Gabriele Petronella - FP for front-end development: should you care? - Codemo...
Gabriele Petronella - FP for front-end development: should you care? - Codemo...
 
Vcs16
Vcs16Vcs16
Vcs16
 
TypeScript - All you ever wanted to know - Tech Talk by Epic Labs
TypeScript - All you ever wanted to know - Tech Talk by Epic LabsTypeScript - All you ever wanted to know - Tech Talk by Epic Labs
TypeScript - All you ever wanted to know - Tech Talk by Epic Labs
 
C arrays
C arraysC arrays
C arrays
 
ES6, 잘 쓰고 계시죠?
ES6, 잘 쓰고 계시죠?ES6, 잘 쓰고 계시죠?
ES6, 잘 쓰고 계시죠?
 
ECMAScript 6 and beyond
ECMAScript 6 and beyondECMAScript 6 and beyond
ECMAScript 6 and beyond
 
CoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairCoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love Affair
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs
 
Go Says WAT?
Go Says WAT?Go Says WAT?
Go Says WAT?
 
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
 
Hello, I need some assistance in writing a java program THAT MUST US.pdf
Hello, I need some assistance in writing a java program THAT MUST US.pdfHello, I need some assistance in writing a java program THAT MUST US.pdf
Hello, I need some assistance in writing a java program THAT MUST US.pdf
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 
Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6
 

Recently uploaded

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 

Recently uploaded (20)

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 

Building Functional Islands