SlideShare a Scribd company logo
1 of 25
Download to read offline
CONCEPTS OF FUNCTIONAL PROGRAMMING
/Yannick Chartois @ychartois
BODIL STOKKE
What Every Hipster Should Know About Functional
Programming
/Vimeo Parleys
MY FIRST QUESTION
Now that we have lambdas in Java 8, can we use FP concepts?
EXTENDED QUESTION
Is there an advantage to use these concepts in other language
with First Class Function as Javascript
1. FIRST CLASS FUNCTION
Definition
“A programming language is said to have first-
class functions if it treats functions as first-
class citizens”
1. FIRST CLASS FUNCTION
Code:
Function< String, String > hello = (String s) ­> "hello " + s;
Result:
hello ;
// BaseConcepts$$Lambda$1@a09ee92
// != BaseConcepts@30f39991
hello.apply("Erouan") ;
// hello Erouan
2. HIGH ORDER FUNCTION
Definition
“It's a function that takes one or more
function as parameters or that returns a
function”
2. HIGH ORDER FUNCTION
Code:
Function< String, String > twice( Function< String, String > f ) {
    return (String s) ­> f.apply( f.apply(s) );
}
Resultat:
twice(hello).apply("Erouan");
// hello hello Erouan
2. HIGH ORDER FUNCTION
Code:
hello = (s) ­> return "Hello " + s
twice = (func, s) ­>
    return func func s
Resultat:
twice(hello,"Erouan")
// hello hello Erouan
3. CURRYING
Definition
“Currying is the technique of translating the
evaluation of a function that takes multiple
arguments (or a tuple of arguments) into
evaluating a sequence of functions, each with
a single argument”
3. CURRYING
Previous code:
twice = (func, s) ­>
    return func func s
Currying code:
twice = ( func ) ­> ( s ) ­>
    return func func s
Result:
twice(hello)("Erouan")
// hello hello Erouan
4. FUNCTOR
Definition
“A functor is a collection of X that can apply a
function f : X → Y over itself to create a
collection of Y.”
4. FUNCTOR - MAP
Code:
List< String > map( Function< String, String > f
                        , List< String > values ) {
    List< String > toReturn = new ArrayList< >();
    for( String current : values ) {
        toReturn.add( f.apply(current) );
    }
    return toReturn;
}
Result:
List< String > confs =
                 Arrays.asList( new String[]{"Corkdev", "devoxx", "javaone"
map( s ­> s.toUpperCase(), confs );
// [CORKDEV, DEVOXX, JAVAONE]
With Java 8:
confs.stream().map( s ­> s.toUpperCase() ).collect( Collectors.toList() )
With Coffescript:
["Corkdev", "devoxx", "javaone"].map (el) ­> el.toUpperCase()
4. FUNCTOR - FILTER
Code:
List< String > filter( Function< String, Boolean > f,
                                List< String > values ) {
    List< String > toReturn = new ArrayList< >();
    for( String current : values ) {
        if ( f.apply(current) )
            toReturn.add( current );
    }
    return toReturn;
}
Result:
List< String > confs =
              Arrays.asList( new String[]{"jug", "devoxx", "javaone"} );
filter(s ­> s.contains("j"), confs) ;
// [jug, javaone]
With Java 8:
confs.stream().filter( s ­> s.contains("j") ).collect(Collectors.toList())
With Coffescript:
["Corkdev", "devoxx", "javaone"].filter (el) ­> el.indexOf('k') != ­1
5. REDUCE / FOLD
Definition
“Fold is a family of higher order functions that
process a data structure in some order and
build a return value”
5. REDUCE / FOLD
Code:
String reduce( BinaryOperator< String > op , List< String > values ) {
    String toReturn = "";
    for( String current : values ) {
        toReturn = toReturn.isEmpty() ? current : op.apply(toReturn, current)
    }
return toReturn; }
Result:
List< String > confs = Arrays.asList( "Corkdev", "devoxx", "javaone" );
reduce( (s1, s2) ­> s1 + ", " + S2, confs );
// Corkdev, devoxx, javaone
With Java 8:
confs.stream().reduce((s1, s2) ­> s1 + ", " + s2 ).get() )
With Coffescript:
["Corkdev", "devoxx", "javaone"].reduce (e1, e2) ­> e1 + ", " + e2
6. COMBINATOR
Definition
“One definition of a combinator is a function
with no free variables.”
6. COMBINATOR - NULL COMBINATOR
Constat:
List< String > confs2 = Arrays.asList( new String[]
                        {"jug", "devoxx", "javaone", null} );
map( s ­> s.toUpperCase(), confs2);
// Exception in thread "main" java.lang.NullPointerException
Code:
Function< String, String > nullCheck( Function< String, String > f ) {
    return (String s) ­> s == null ? "null" : f.apply(s);
}
Result:
map( nullCheck(s ­> s.toUpperCase()), confs2)
// [JUG, DEVOXX, JAVAONE, null]
7. COMPOSITION
Definition
“Combine several functions to create a new
function”
7. COMPOSITION
Code:
Function< String, String > compose ( Function< String, String > f1,
                                        Function< String, String > f2  ) {
    return (String s) ­> f1.apply( f2.apply(s) );
}
Result:
Function< String, String > up = (String s) ­> s.toUpperCase();
Function< String, String > hello = (String s) ­> "hello " + s;
up.apply( hello.apply("Erouan") );
compose( up, hello).apply("Erouan") ;
// HELLO EROUAN
With Java 8:
hello.andThen(up).apply("Erouan")
up.compose(hello).apply("Erouan")
7. COMPOSITION - JAVASCRIPT
Code Coffee:
compose = (fs...) ­> fs.reduce (f, g) ­> (as...) ­> f g as...
Code JS:
compose = function() {
    var fs;
    fs = 1 <= arguments.length ? slice.call(arguments, 0) : [];
    return fs.reduce(function(f, g) {
        return function() {
            var as;
            as = 1 <= arguments.length ? slice.call(arguments, 0) : [];
            return f(g.apply(null, as));
        };
    });
};
Result:
up = (s) ­> s.toUpperCase()
hello = (s) ­> "Hello " + s
compose(up, hello) "Pierre"
// HELLO PIERRE
WHY??
names = ["Pierre", "John", "Colm", "Petra", "Lenka"]
up = (s) ­> s.toUpperCase()
hello = (s) ­> "Hello " + s
Because for me that:
names.filter( (el) ­> el.indexOf('k') == ­1 )
    .map( (el) ­> compose(up, hello)(el) )
    .reduce( (e1, e2) ­> e1 + ", " + e2 )
Is more readable than:
acc = ""
for name in names
    if name.indexOf('k') == ­1
        if acc != ""
            acc += ", " + up hello name
        else
            acc += up hello name
END !
SOURCES: PROGFONCJAVA8
TWITTER: @YCHARTOIS

More Related Content

Viewers also liked

Les concepts de la programmation fonctionnelle illustrés avec java 8
Les concepts de la programmation fonctionnelle illustrés avec java 8Les concepts de la programmation fonctionnelle illustrés avec java 8
Les concepts de la programmation fonctionnelle illustrés avec java 8Yannick Chartois
 
Scopriariannabyskemalog babel
Scopriariannabyskemalog babelScopriariannabyskemalog babel
Scopriariannabyskemalog babelBabel
 
Babelinfograficamonamourisa2014
Babelinfograficamonamourisa2014Babelinfograficamonamourisa2014
Babelinfograficamonamourisa2014Babel
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Yannick Chartois
 
Уютненько о Яндекс Директ
Уютненько о Яндекс ДиректУютненько о Яндекс Директ
Уютненько о Яндекс ДиректFelix315
 
Nova Marketing. Presentation.
Nova Marketing. Presentation.Nova Marketing. Presentation.
Nova Marketing. Presentation.Felix315
 

Viewers also liked (11)

Multi Recharge Company
Multi Recharge CompanyMulti Recharge Company
Multi Recharge Company
 
Certifications Java
Certifications JavaCertifications Java
Certifications Java
 
My profile
My profileMy profile
My profile
 
Les concepts de la programmation fonctionnelle illustrés avec java 8
Les concepts de la programmation fonctionnelle illustrés avec java 8Les concepts de la programmation fonctionnelle illustrés avec java 8
Les concepts de la programmation fonctionnelle illustrés avec java 8
 
Scopriariannabyskemalog babel
Scopriariannabyskemalog babelScopriariannabyskemalog babel
Scopriariannabyskemalog babel
 
Babelinfograficamonamourisa2014
Babelinfograficamonamourisa2014Babelinfograficamonamourisa2014
Babelinfograficamonamourisa2014
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8
 
Gravity: A Love Story
Gravity: A Love StoryGravity: A Love Story
Gravity: A Love Story
 
Уютненько о Яндекс Директ
Уютненько о Яндекс ДиректУютненько о Яндекс Директ
Уютненько о Яндекс Директ
 
Nova Marketing. Presentation.
Nova Marketing. Presentation.Nova Marketing. Presentation.
Nova Marketing. Presentation.
 
Domain Name System
Domain Name SystemDomain Name System
Domain Name System
 

Similar to Concepts of functional programming

Functional programming is the most extreme programming
Functional programming is the most extreme programmingFunctional programming is the most extreme programming
Functional programming is the most extreme programmingsamthemonad
 
04. WORKING WITH FUNCTIONS-2 (1).pptx
04. WORKING WITH FUNCTIONS-2 (1).pptx04. WORKING WITH FUNCTIONS-2 (1).pptx
04. WORKING WITH FUNCTIONS-2 (1).pptxManas40552
 
Why Functional Programming So Hard?
Why Functional Programming So Hard?Why Functional Programming So Hard?
Why Functional Programming So Hard?Ilya Sidorov
 
Intro Java Rev010
Intro Java Rev010Intro Java Rev010
Intro Java Rev010Rich Helton
 
WHY JAVASCRIPT FUNCTIONAL PROGRAMMING IS SO HARD?
WHY JAVASCRIPT FUNCTIONAL PROGRAMMING IS SO HARD? WHY JAVASCRIPT FUNCTIONAL PROGRAMMING IS SO HARD?
WHY JAVASCRIPT FUNCTIONAL PROGRAMMING IS SO HARD? reactima
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationAjax Experience 2009
 
Mastering Python lesson 4_functions_parameters_arguments
Mastering Python lesson 4_functions_parameters_argumentsMastering Python lesson 4_functions_parameters_arguments
Mastering Python lesson 4_functions_parameters_argumentsRuth Marvin
 
Introduction to functional programming
Introduction to functional programmingIntroduction to functional programming
Introduction to functional programmingThang Mai
 
Introduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and StreamsIntroduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and StreamsEmiel Paasschens
 
2nd puc computer science chapter 8 function overloading
 2nd puc computer science chapter 8   function overloading 2nd puc computer science chapter 8   function overloading
2nd puc computer science chapter 8 function overloadingAahwini Esware gowda
 
Introduction to computer science
Introduction to computer scienceIntroduction to computer science
Introduction to computer scienceumardanjumamaiwada
 
Operator Overloading and Scope of Variable
Operator Overloading and Scope of VariableOperator Overloading and Scope of Variable
Operator Overloading and Scope of VariableMOHIT DADU
 
javascript function ujjwal matoliya.pptx
javascript function ujjwal matoliya.pptxjavascript function ujjwal matoliya.pptx
javascript function ujjwal matoliya.pptxujjwalmatoliya
 
Android coding guide lines
Android coding guide linesAndroid coding guide lines
Android coding guide lineslokeshG38
 
379008-rc217-functionalprogramming
379008-rc217-functionalprogramming379008-rc217-functionalprogramming
379008-rc217-functionalprogrammingLuis Atencio
 
PHP 5.3 Part 2 - Lambda Functions & Closures
PHP 5.3 Part 2 - Lambda Functions & ClosuresPHP 5.3 Part 2 - Lambda Functions & Closures
PHP 5.3 Part 2 - Lambda Functions & Closuresmelechi
 

Similar to Concepts of functional programming (20)

Functional programming is the most extreme programming
Functional programming is the most extreme programmingFunctional programming is the most extreme programming
Functional programming is the most extreme programming
 
Books
BooksBooks
Books
 
04. WORKING WITH FUNCTIONS-2 (1).pptx
04. WORKING WITH FUNCTIONS-2 (1).pptx04. WORKING WITH FUNCTIONS-2 (1).pptx
04. WORKING WITH FUNCTIONS-2 (1).pptx
 
Why Functional Programming So Hard?
Why Functional Programming So Hard?Why Functional Programming So Hard?
Why Functional Programming So Hard?
 
Intro Java Rev010
Intro Java Rev010Intro Java Rev010
Intro Java Rev010
 
WHY JAVASCRIPT FUNCTIONAL PROGRAMMING IS SO HARD?
WHY JAVASCRIPT FUNCTIONAL PROGRAMMING IS SO HARD? WHY JAVASCRIPT FUNCTIONAL PROGRAMMING IS SO HARD?
WHY JAVASCRIPT FUNCTIONAL PROGRAMMING IS SO HARD?
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
 
Mastering Python lesson 4_functions_parameters_arguments
Mastering Python lesson 4_functions_parameters_argumentsMastering Python lesson 4_functions_parameters_arguments
Mastering Python lesson 4_functions_parameters_arguments
 
FUNCTIONS.pptx
FUNCTIONS.pptxFUNCTIONS.pptx
FUNCTIONS.pptx
 
Introduction to functional programming
Introduction to functional programmingIntroduction to functional programming
Introduction to functional programming
 
Introduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and StreamsIntroduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and Streams
 
2nd puc computer science chapter 8 function overloading
 2nd puc computer science chapter 8   function overloading 2nd puc computer science chapter 8   function overloading
2nd puc computer science chapter 8 function overloading
 
lecture 6
 lecture 6 lecture 6
lecture 6
 
Introduction to computer science
Introduction to computer scienceIntroduction to computer science
Introduction to computer science
 
Operator Overloading and Scope of Variable
Operator Overloading and Scope of VariableOperator Overloading and Scope of Variable
Operator Overloading and Scope of Variable
 
Function overloading
Function overloadingFunction overloading
Function overloading
 
javascript function ujjwal matoliya.pptx
javascript function ujjwal matoliya.pptxjavascript function ujjwal matoliya.pptx
javascript function ujjwal matoliya.pptx
 
Android coding guide lines
Android coding guide linesAndroid coding guide lines
Android coding guide lines
 
379008-rc217-functionalprogramming
379008-rc217-functionalprogramming379008-rc217-functionalprogramming
379008-rc217-functionalprogramming
 
PHP 5.3 Part 2 - Lambda Functions & Closures
PHP 5.3 Part 2 - Lambda Functions & ClosuresPHP 5.3 Part 2 - Lambda Functions & Closures
PHP 5.3 Part 2 - Lambda Functions & Closures
 

Recently uploaded

GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Recently uploaded (20)

GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 

Concepts of functional programming