SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
with
by
Carlo Sciollaskuro@skuro.tk
with
Carlo Sciollaskuro@skuro.tk
works for
organisesfrom
The package contains
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
with
with
The package contains
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
with
Brief intro to Clojure
● I will trade precision for clarity
● there’s much more to know
● one huge missing topic: the REPL
● you can try this at home
with
Clojure data anatomy
1 2.0 3/4 ; numbers
foo bar ; symbols
:one :two ; keywords
“value” ; strings
true false ; bools
a b c ; chars
nil ; null
with
Clojure data anatomy
[1 2 3] ; vector
‘(foo bar) ; list
#{:one :two} ; set
{:key “value”} ; map
with
Clojure data anatomy
[1 2 3] ; vector
‘(foo bar) ; list
#{:one :two} ; set
{:key “value”} ; map
with
Clojure code anatomy
(* 132.715
(- 1.06 1.02))
-> 5.308600000000005
nested unquoted lists, in facts:
“The name LISP derives from "LISt Processing".” -- Wikipedia
with
Clojure code anatomy
(* 132.715
(- 1.06 1.02))
-> 5.308600000000005
no “return”: everything
is an expression
with
Clojure beer anatomy
(* 132.715
(- 1.06 1.02))
-> 5.31º
Alcohol by volume formula (Wikipedia):
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
*
132.
715 -
1.06 1.02
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
*
132.
715 -
1.06 1.02
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715 -
1.06 1.02
The symbol * evaluates to:
clojure.core/_STAR_
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715 -
1.06 1.02
Values evaluate to themselves
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715 -
1.06 1.02
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715
SUB
1.06 1.02
The symbol - evaluates to:
clojure.core/_
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715
SUB
1.06 1.02
Values evaluate to themselves
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715
SUB
1.06 1.02
Values evaluate to themselves
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715
SUB
1.06 1.02
All args evaluated? Function call!
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715
0.04
All args evaluated? Function call!
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
STAR
132.
715
0.04
All args evaluated? Function call!
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
5.31
(* 132.715
(- 1.06 1.02))
All args evaluated? Function call!
with
The Reader
Or:
How
I
Learned
To
Stop
Worrying
And
Love
The
Eval
(* 132.715
(- 1.06 1.02))
with
Naming stuff: global bindings
(def scalar 42)
(def fun
(fn [a b] (+ a b)))
(defn moar-fun [a b]
(+ a b)))
with
Naming stuff: lexical bindings
(let [one “one”
key (keyword one)]
key)
; => :one
with
Ready to go
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(defn compose [f g]
(fn [x] (f (g x))))
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(defn compose [f g]
(fn [x] (f (g x))))
returns a function
accepts functions in input
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(defn compose [f g]
(fn [x] (f (g x))))
((compose inc dec) 42)
; => 42
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(let [foo [{:pi 3.14}
{:g 9.8}]]
(conj foo {:phi 1.62}))
; => [{:pi 3.14} {:g 9.8} {:phi 1.63}]
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(let [foo [{:pi 3.14}
{:g 9.8}]]
(conj foo {:phi 1.62})
(count foo)) ; => 2
3.14:pi
foo foo’
9.8:g 1.62:phi
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(doseq [_ (range 2000)]
(inc 41)) ; => always 42
For a given input, pure functions yield the same result,
making them dead-easy to maintain and prove correct
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(doseq [_ (range 2000)]
(rand)
(http/GET “http://...”))
Impure code enables interaction, but introduces side effects
which make your program harder to test and reason about
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(defn my-inc [[h & t]]
(when h
(cons (inc h)
(my-inc t))))
recursive call
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(defn my-inc [[h & t]]
(when h
(cons (inc h)
(my-inc t))))exit condition
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
destructuring:
pattern-match your input
(defn my-inc [[h & t]]
(when h
(cons (inc h)
(my-inc t))))
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
def my-inc(s) {
def res = []
for(i in s)
res << i + 1
res
}
(defn my-inc [[h & t]]
(when h
(cons (inc h)
(my-inc t))))
with
What if the input is infinite?
(defn my-inc [[h & t]]
(when h
(cons (inc h)
(my-inc t))))
with
Kaboom!
(defn my-inc [[h & t]]
(when h
(cons (inc h)
(my-inc t))))
with no tail call optimisation (TCO),
recursive invocations blows up the stack
with
Working around the lack of TCO
(defn my-inc [s]
(loop [res () rem s]
(let [[h & t] rem]
(if h
(recur (cons (inc h) res) t)
res))))
with
Working around the lack of TCO
(defn my-inc [s]
(loop [res () rem s]
(let [[h & t] rem]
(if h
(recur (cons (inc h) res) t)
res))))
ECMAScript 6
Java 9 (?)
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(defn lazy-inc [[h & t]]
(lazy-seq
(when h
(cons (inc h)
(lazy-inc t))))
with
Functional schmunctional
● functions as values
● immutable (persistent) data structures
● pure functions
● recursion
● lazy evaluation
(defn lazy-inc [[h & t]]
(lazy-seq
(when h
(cons (inc h)
(lazy-inc t))))
retuns a “thunk”
with
What if the input is infinite?
(defn lazy-inc [[h & t]]
(lazy-seq
(when h
(cons (inc h)
(lazy-inc t)))))
with
What if the input is infinite?
(defn lazy-inc [[h & t]]
(lazy-seq
(when h
(cons (inc h)
(lazy-inc t)))))
with
Q / A
with
Thanks!
Carlo Sciolla
p r o f e s s i o n a l t i n k e r e r
https://twitter.com/skuro
https://github.com/skuro
http://skuro.tk
http://amsclj.nl

Contenu connexe

Tendances

Functional programming basics
Functional programming basicsFunctional programming basics
Functional programming basics
openbala
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
Computer Science Club
 
SeaJUG March 2004 - Groovy
SeaJUG March 2004 - GroovySeaJUG March 2004 - Groovy
SeaJUG March 2004 - Groovy
Ted Leung
 
“Tasks” in NetLogo 5.0beta1
“Tasks” in NetLogo 5.0beta1“Tasks” in NetLogo 5.0beta1
“Tasks” in NetLogo 5.0beta1
SethTisue
 

Tendances (20)

R Programming: Transform/Reshape Data In R
R Programming: Transform/Reshape Data In RR Programming: Transform/Reshape Data In R
R Programming: Transform/Reshape Data In R
 
Scala for Java Developers
Scala for Java DevelopersScala for Java Developers
Scala for Java Developers
 
Comparing Haskell & Scala
Comparing Haskell & ScalaComparing Haskell & Scala
Comparing Haskell & Scala
 
R factors
R   factorsR   factors
R factors
 
Refinement Types for Haskell
Refinement Types for HaskellRefinement Types for Haskell
Refinement Types for Haskell
 
TDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
TDC218SP | Trilha Kotlin - DSLs in a Kotlin WayTDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
TDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
 
Clojure basics
Clojure basicsClojure basics
Clojure basics
 
Functional programming basics
Functional programming basicsFunctional programming basics
Functional programming basics
 
Curry functions in Javascript
Curry functions in JavascriptCurry functions in Javascript
Curry functions in Javascript
 
Scala categorytheory
Scala categorytheoryScala categorytheory
Scala categorytheory
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
Data structure lab manual
Data structure lab manualData structure lab manual
Data structure lab manual
 
Functional programming in JavaScript
Functional programming in JavaScriptFunctional programming in JavaScript
Functional programming in JavaScript
 
SeaJUG March 2004 - Groovy
SeaJUG March 2004 - GroovySeaJUG March 2004 - Groovy
SeaJUG March 2004 - Groovy
 
Function composition in Javascript
Function composition in JavascriptFunction composition in Javascript
Function composition in Javascript
 
Functional Programming in Javascript - IL Tech Talks week
Functional Programming in Javascript - IL Tech Talks weekFunctional Programming in Javascript - IL Tech Talks week
Functional Programming in Javascript - IL Tech Talks week
 
C++ Returning Objects
C++ Returning ObjectsC++ Returning Objects
C++ Returning Objects
 
Yin Yangs of Software Development
Yin Yangs of Software DevelopmentYin Yangs of Software Development
Yin Yangs of Software Development
 
Value Objects, Full Throttle (to be updated for spring TC39 meetings)
Value Objects, Full Throttle (to be updated for spring TC39 meetings)Value Objects, Full Throttle (to be updated for spring TC39 meetings)
Value Objects, Full Throttle (to be updated for spring TC39 meetings)
 
“Tasks” in NetLogo 5.0beta1
“Tasks” in NetLogo 5.0beta1“Tasks” in NetLogo 5.0beta1
“Tasks” in NetLogo 5.0beta1
 

En vedette

Blackbaud Webinar: Turning Fans into Donors and Activists Through Social Media
Blackbaud Webinar: Turning Fans into Donors and Activists Through Social Media Blackbaud Webinar: Turning Fans into Donors and Activists Through Social Media
Blackbaud Webinar: Turning Fans into Donors and Activists Through Social Media
Carie Lewis Carlson
 
The Century Project Grand Junction, Colorado
The Century Project Grand Junction, ColoradoThe Century Project Grand Junction, Colorado
The Century Project Grand Junction, Colorado
tgvku91
 
Color Grids, 7/6/2011
Color Grids, 7/6/2011Color Grids, 7/6/2011
Color Grids, 7/6/2011
tgvku91
 
What is engineering_leaflet
What is engineering_leafletWhat is engineering_leaflet
What is engineering_leaflet
izzet-kamil
 

En vedette (20)

How to Create things people Love-Edward Boudrot
How to Create things people Love-Edward BoudrotHow to Create things people Love-Edward Boudrot
How to Create things people Love-Edward Boudrot
 
Codigo procesal - proyecto
Codigo procesal - proyectoCodigo procesal - proyecto
Codigo procesal - proyecto
 
Blackbaud Webinar: Turning Fans into Donors and Activists Through Social Media
Blackbaud Webinar: Turning Fans into Donors and Activists Through Social Media Blackbaud Webinar: Turning Fans into Donors and Activists Through Social Media
Blackbaud Webinar: Turning Fans into Donors and Activists Through Social Media
 
The Century Project Grand Junction, Colorado
The Century Project Grand Junction, ColoradoThe Century Project Grand Junction, Colorado
The Century Project Grand Junction, Colorado
 
Color Grids, 7/6/2011
Color Grids, 7/6/2011Color Grids, 7/6/2011
Color Grids, 7/6/2011
 
CTG Ed 542_T-28-29
CTG Ed 542_T-28-29CTG Ed 542_T-28-29
CTG Ed 542_T-28-29
 
Distributed Pair Programming
Distributed Pair ProgrammingDistributed Pair Programming
Distributed Pair Programming
 
Social Marketing Strategy Electronics Industry
Social Marketing Strategy Electronics IndustrySocial Marketing Strategy Electronics Industry
Social Marketing Strategy Electronics Industry
 
Want Your Carpets To Look Like New?
Want Your Carpets To Look Like New?Want Your Carpets To Look Like New?
Want Your Carpets To Look Like New?
 
Process Automation Makeover: Transform Multiple Workflows into One Process by...
Process Automation Makeover: Transform Multiple Workflows into One Process by...Process Automation Makeover: Transform Multiple Workflows into One Process by...
Process Automation Makeover: Transform Multiple Workflows into One Process by...
 
What is engineering_leaflet
What is engineering_leafletWhat is engineering_leaflet
What is engineering_leaflet
 
RESIDUAL INCOME
RESIDUAL INCOMERESIDUAL INCOME
RESIDUAL INCOME
 
Resumo cubo rubiks
Resumo cubo rubiksResumo cubo rubiks
Resumo cubo rubiks
 
Vanvasa resort
Vanvasa resortVanvasa resort
Vanvasa resort
 
JFDI: how to get into a top accelerator
JFDI: how to get into a top acceleratorJFDI: how to get into a top accelerator
JFDI: how to get into a top accelerator
 
Going viral
Going viral Going viral
Going viral
 
Impacto de las tic en nuestra institucion educativa
Impacto de las tic en nuestra institucion educativaImpacto de las tic en nuestra institucion educativa
Impacto de las tic en nuestra institucion educativa
 
ICC World Cup 2015 Logo
ICC World Cup 2015 LogoICC World Cup 2015 Logo
ICC World Cup 2015 Logo
 
同志為什麼要保障?
同志為什麼要保障?同志為什麼要保障?
同志為什麼要保障?
 
The Ideal Proxy Statement
The Ideal Proxy StatementThe Ideal Proxy Statement
The Ideal Proxy Statement
 

Similaire à Functional Programming with Clojure

Profiling and optimization
Profiling and optimizationProfiling and optimization
Profiling and optimization
g3_nittala
 
The Logical Burrito - pattern matching, term rewriting and unification
The Logical Burrito - pattern matching, term rewriting and unificationThe Logical Burrito - pattern matching, term rewriting and unification
The Logical Burrito - pattern matching, term rewriting and unification
Norman Richards
 

Similaire à Functional Programming with Clojure (20)

Clojure
ClojureClojure
Clojure
 
Python lecture 05
Python lecture 05Python lecture 05
Python lecture 05
 
Functional programming with clojure
Functional programming with clojureFunctional programming with clojure
Functional programming with clojure
 
CS101- Introduction to Computing- Lecture 29
CS101- Introduction to Computing- Lecture 29CS101- Introduction to Computing- Lecture 29
CS101- Introduction to Computing- Lecture 29
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional Programming
 
Programming picaresque
Programming picaresqueProgramming picaresque
Programming picaresque
 
A taste of Functional Programming
A taste of Functional ProgrammingA taste of Functional Programming
A taste of Functional Programming
 
Power of functions in a typed world
Power of functions in a typed worldPower of functions in a typed world
Power of functions in a typed world
 
Profiling and optimization
Profiling and optimizationProfiling and optimization
Profiling and optimization
 
Fp
FpFp
Fp
 
ITT 2015 - Saul Mora - Object Oriented Function Programming
ITT 2015 - Saul Mora - Object Oriented Function ProgrammingITT 2015 - Saul Mora - Object Oriented Function Programming
ITT 2015 - Saul Mora - Object Oriented Function Programming
 
Pune Clojure Course Outline
Pune Clojure Course OutlinePune Clojure Course Outline
Pune Clojure Course Outline
 
The Logical Burrito - pattern matching, term rewriting and unification
The Logical Burrito - pattern matching, term rewriting and unificationThe Logical Burrito - pattern matching, term rewriting and unification
The Logical Burrito - pattern matching, term rewriting and unification
 
C# - What's Next?
C# - What's Next?C# - What's Next?
C# - What's Next?
 
Functional programming in clojure
Functional programming in clojureFunctional programming in clojure
Functional programming in clojure
 
Meetup C++ A brief overview of c++17
Meetup C++  A brief overview of c++17Meetup C++  A brief overview of c++17
Meetup C++ A brief overview of c++17
 
Good functional programming is good programming
Good functional programming is good programmingGood functional programming is good programming
Good functional programming is good programming
 
Functional go
Functional goFunctional go
Functional go
 
Functional Go
Functional GoFunctional Go
Functional Go
 
The Ring programming language version 1.8 book - Part 37 of 202
The Ring programming language version 1.8 book - Part 37 of 202The Ring programming language version 1.8 book - Part 37 of 202
The Ring programming language version 1.8 book - Part 37 of 202
 

Plus de Carlo Sciolla (6)

Codemotion Amsterdam: a conference for the tech community
Codemotion Amsterdam: a conference for the tech communityCodemotion Amsterdam: a conference for the tech community
Codemotion Amsterdam: a conference for the tech community
 
Grudging monkeys and microservices
Grudging monkeys and microservicesGrudging monkeys and microservices
Grudging monkeys and microservices
 
Dispatch in Clojure
Dispatch in ClojureDispatch in Clojure
Dispatch in Clojure
 
A Dive Into Clojure
A Dive Into ClojureA Dive Into Clojure
A Dive Into Clojure
 
Alfresco the clojure way -- Slides from the Alfresco DevCon2011
Alfresco the clojure way -- Slides from the Alfresco DevCon2011Alfresco the clojure way -- Slides from the Alfresco DevCon2011
Alfresco the clojure way -- Slides from the Alfresco DevCon2011
 
Alfresco the clojure way
Alfresco the clojure wayAlfresco the clojure way
Alfresco the clojure way
 

Dernier

Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

Dernier (20)

%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 

Functional Programming with Clojure