SlideShare a Scribd company logo
1 of 107
Download to read offline
Functional
      Programming

λ                     Bryan Weber
        Near Infinity Corporation
                    January 2009



                                    1
About the Speaker

• Let’s be honest
• You don’t know
• You don’t care
• Let’s move on...

                            2
                                2
Things should not change
               and they should
not affect others

                                 3
                                     3
and it would be good if they
could do both at the
same time

                               4
                                   4
What’s the point?




                    5
                        5
What
not how
not when

           6
               6
Before we go any further..




                             7
                                 7
Mathematics!




               8
Uh oh!




         9
Please don’t leave..


                       10
Good book




            11
Functional Languages
Haskell
                       Scala
Clean
                     Clojure
F#
                      XSLT
ML / OCaml
                      Erlang
Lisp / Scheme
                               12
                               12
Pure Functional Languages
Haskell
                     Scala
Clean
                   Clojure
F#
                    XSLT
ML / OCaml
                    Erlang
Lisp / Scheme
                             13
                             13
Haskell




          14
Introductory?




                15
Programming?




               16
Is it too hard?




                  17
Again?




         18
         18
The foundation




                 19
What is a function?

              y = f(x)
                         20
Lambda Calculus




                  21
Lambda expression

        λ x. x + 2
                     22
How do we achieve
functions like..
          f(x,y) -> z
                        23
Function Currying Example

foo(x,y) -> z
     bar(x) -> baz
     baz(y) -> z
                             24
“It's not difficult at all,
      proc {|x, y, z| x + y + z }.curry
 returns the proc object equivalent to
proc {|x| proc {|y| proc {|z| x + y + z } } }
                    See?”
                         matz.




                                                25
Why do this in Ruby?

plus_five =proc{|x,y,z|x+y+z }.curry.call(2).call(3)

plus_five[10]       #=> 15



                                                      26
Ruby,
really?
          C# too!
          LINQ
                    27
Arity example   (1)


%% sum/1
sum(L) -> sum(L,0).

%% sum/2
sum([], N) -> N;
sum([H|T],N) -> sum(T, H+N).
                               28
Pattern Matching
            example


                      29
-module(patternmatch).
-export([run/0]).
run() ->
         tupleassign(),
         pmatch(),
         invalid().
invalid() ->
     Str1 = quot;have a nice dayquot;,
     Str2 = quot;have another nice dayquot;,
     Str1 = Str2. %% this is an error!
tupleassign() ->
         MyTuple = {1,2,3},
         {A,B,C} = MyTuple, %% this assigns values to unbound A, B and C
         io:format(quot;A:~p B:~p C:~p ~nquot;,[A,B,C]).
pmatch() ->
         Str1 = quot;la la laquot;,
         case Str1 of
                  quot;fooquot; ->
                            io:format(quot;uh oh ~nquot;);
                  3 ->
                            io:format(quot;wrong type ~nquot;);
                  quot;la la laquot; ->
                            io:format(quot;We have a match ~nquot;);
                  _ ->
                            io:format(quot;like an else ~nquot;)
         end.


                                                                           30
Built in Assertions /
          Single Assignment
invalid() ->
      Str1 = quot;have a nice dayquot;,
      Str2 = quot;have another nice dayquot;,
      Str1 = Str2. %% this is an error!


                                          31
Multiple Assignment
tupleassign() ->
  %% create a tuple

 MyTuple = {1,2,3},
  %% assign values to unbound A, B and C

 {A,B,C} = MyTuple,
  %% print the result

 io:format(quot;A:~p B:~p C:~p ~nquot;,[A,B,C]).



                                            32
Switch Statement

   Str1 = quot;la la laquot;,

   case Str1 of

   
 quot;fooquot; ->

   
 
 io:format(quot;uh oh ~nquot;);

   
 3 ->

   
 
 io:format(quot;wrong type ~nquot;);

   
 quot;la la laquot; ->

   
 
 io:format(quot;We have a match ~nquot;);

   
 _ ->

   
 
 io:format(quot;like an else ~nquot;)

   end.
                                           33
Call by Future

                 34
Lazy Evaluation

                  35
Control Structure Example



                            36
DEFINE:
newOr a b = if a then a else b

EXAMPLE:
newOr (4==4) (length [1..] > 0)

                                  37
And now, for our
  featured
presentation
                    38
Immutability

           Concurrency

                    Side Effects

                               39
Functional


Object Oriented

                  40
Immutability

           Concurrency

                    Side Effects

                               41
Object Oriented


  Functional


                  42
Enlightenment?




                 43
Immutability

           Concurrency

                    Side Effects

                               44
Immutability

           Concurrency

                    Side Effects

                               45
Can Things Change?




                     46
Immutable Collections
                                example
Lists (IPersistentList)
Vectors (IPersistentVector)
Maps (IPersistentMap)
                              StructMaps
                               ArrayMaps*
                                     Sets
                                            47
PROGRAM: (2)
(in-ns 'main)
(clojure/refer 'clojure)

(defn main [args]
  (def x (list 1 2 3))
  (def y (conj x quot;helloquot; quot;therequot; quot;worldquot;))
  (println quot;list is: [quot; (apply str (interpose quot;, quot; y)) quot;]quot;)
 )

PRODUCES:
list is: [ world, there, hello, 1, 2, 3 ]


                                                              48
Erlang Lists (3)
              append(List1, List2) -> List3

                         Types:

            List1 = List2 = List3 = [term()]

Returns a new list List3 which is made from the elements
       of List1 followed by the elements of List2.



                                                           49
Immutability

           Concurrency

                    Side Effects

                               50
Complexity

             51
No shared state


                  52
STM
Example



          53
Operation        Type Signature
atomically        STM a -> IO a
  retry               STM a
 orElse      STM a -> STM a -> STM a
newTVar         a -> STM (TVar a)
readTVar         TVar a -> STM a
writeTVar      TVar a -> a -> STM ()

                                       54
(4)
module Main where
<< ... imports omitted ... >>
main = do shared <- atomically $ newTVar 0
        before <- atomRead shared
        putStrLn $ quot;Before: quot; ++ show before
        forkIO $ 25 `timesDo` (dispVar shared >> milliSleep 20)
        forkIO $ 10 `timesDo` (appV ((+) 2) shared >> milliSleep 50)
        forkIO $ 20 `timesDo` (appV pred shared >> milliSleep 25)
        milliSleep 800
        after <- atomRead shared
        putStrLn $ quot;After: quot; ++ show after
 where timesDo = replicateM_
     milliSleep = threadDelay . (*) 1000
atomRead = atomically . readTVar
dispVar x = atomRead x >>= print
appV fn x = atomically $ readTVar x >>= writeTVar x . fn

                                                                   55
Message Passing

                  56
Actor Primitives
     spawn
    send (!)
    receive
                   57
Actor



actor
         58
Actor           Actor



        Spawn
                        59
Actor          Actor



        Send
                       60
Actor                Actor



  Receive (pull model)
                             61
Actor Example



                62
-module(actor).
-export([run/0]).

act() ->
 receive
   Message ->
    io:format(quot;You said: ~p~nquot;,[Message])
 end.

run() ->
 Pid = spawn(fun act/0),
 Pid ! quot;Foobarbazquot;.

                                            63
Immutability

           Concurrency

                    Side Effects

                               64
Purity

         65
         65
Side effects




               66
               66
Your program

      Your   API
      Code
You                Black Box




                               67
                               67
Your program
                        State
                        State


      Your   API
      Code
You                Black Box




                                68
                                68
Your program
                         State
                                    Database
                        (Memory)

      Your   API
                                   File System
      Code
You                Black Box


                                    Network


                                                 69
                                                 69
Launch Missiles




                  70
                  70
ALSO
     IO
              Exceptions
 Network
              Randomness
 Database
                Memory
File System
                 Order
  Console
                           71
Side effects are bad, mkay?

                              72
What can I do then?




                      73
Monads!


          74
What is a Monad?




                   75
Monadic Laws

1) Left identify
2) Right identity
3) Associativity

                    76
Monad
        example



                  77
(5)
hPutStr :: Handle -> String -> IO ()
hGetLine :: Handle -> IO String

hEchoLine :: Handle -> IO String
hEchoLine h = do {
  s <- hGetLine h
  ; hPutStr h (“I read: ” ++ s ++ “n”)
  ; return s
}


                                          78
Does order matter?




                     79
Order is a side effect as well..
                                   80
Order
        example



                  81
func(x,y,z) -> r

                        zr
xa         yb




                             82
func(x,y,z) -> r

                        zr
xa         yb




                             83
Data dependency
             example

                       84
func(x,y) -> z

                      bz
xa       y,a b




                           85
func(x,y) -> z

                      bz
xa       y,a b




                           86
func(x,y) -> z

                      bz
xa       y,a b




                           87
func(x,y) -> z

                      bz
xa       y,a b




                           88
Function
       Optimization
                      Example

f = g(x) + g(x)

                                89
The Real WOrld



                 90
No time for:
    Polymorphism
            Lists
             Tuples
              Guards
               Accumulators
                Continuations
               Comprehensions
               Fault      Tolerance
             Type           Systems
          Process             Linking
        Recursion              (TCO)
     Higher Order             Functions

                                          91
Summary



          92
Functions (Math)




                   93
Functions (Math)

Immutability




                   94
Functions (Math)

Immutability

Concurrency




                   95
Functions (Math)

Immutability

Concurrency

  Developer
Optimizations


                    96
Functions (Math)

Immutability        Side Effects

Concurrency

  Developer
Optimizations


                                   97
Functions (Math)

Immutability        Side Effects

Concurrency           Monads

  Developer
Optimizations


                                   98
Functions (Math)

Immutability        Side Effects

Concurrency            Monads

  Developer          Automated
Optimizations       Optimizations


                                    99
Things should not change
 (but state is great!)
            and they should
  not affect others
(without notifying us)        100
                              100
and it would be good if they
could do both at the
same time
(all the time)
                               101
                               101
Resources



            102
Books
       Beautiful Code (Oram and Wilson)
Real World Haskell (O’Sullivan, Stewart and Goerzen)
       Programming Erlang (Armstrong)
       Foundations of F# (Pickering)
    Expert F# (Syme, Granicz and Cisternino)
         F# for Scientists (Harrop)
       Programming in Haskell (Hutton)

                Coming Soon
        Programming Scala (Subramaniam)
         Programming Clojure (Halloway)

                                                       103
The Web
              http://www.erlang.org
              http://www.haskell.org
              http://www.clojure.org
             http://www.trapexit.org
            http://www.scala-lang.org
         http://lambda-the-ultimate.org
        http://pragmaticstudio.com/erlang
        http://en.wikibooks.org/wiki/Haskell
       http://book.realworldhaskell.org/read
     http://www.lisperati.com/fringedc.html
http://research.microsoft.com/fsharp/fsharp.aspx
                                                   104
IRC
chat.freenode.net
     #haskell
      #scala
     #erlang
     #clojure
     #fsharp
                    105
References
1) Example shamelessly stolen from page 42 of
“Programming Erlang” by Joe Armstrong.
2) Shamelessly stolen from Clojure doc
3) From Erlang stdlib documentation
4) Shamelessly stolen from
http://www.haskell.org/haskellwiki/Simple_STM_example
5) Example from “Beautiful Code” by Oram and Wilson




                                                        106
Questions?

             107

More Related Content

What's hot

Intro to Functional Programming
Intro to Functional ProgrammingIntro to Functional Programming
Intro to Functional ProgrammingHugo Firth
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingRichardWarburton
 
Introduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScriptIntroduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScripttmont
 
Programmation fonctionnelle Scala
Programmation fonctionnelle ScalaProgrammation fonctionnelle Scala
Programmation fonctionnelle ScalaSlim Ouertani
 
Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Scott Wlaschin
 
Why we cannot ignore Functional Programming
Why we cannot ignore Functional ProgrammingWhy we cannot ignore Functional Programming
Why we cannot ignore Functional ProgrammingMario Fusco
 
Introduction to Recursion (Python)
Introduction to Recursion (Python)Introduction to Recursion (Python)
Introduction to Recursion (Python)Thai Pangsakulyanont
 
Functional programming ii
Functional programming iiFunctional programming ii
Functional programming iiPrashant Kalkar
 
Jumping-with-java8
Jumping-with-java8Jumping-with-java8
Jumping-with-java8Dhaval Dalal
 
Java concepts and questions
Java concepts and questionsJava concepts and questions
Java concepts and questionsFarag Zakaria
 
The lazy programmer's guide to writing thousands of tests
The lazy programmer's guide to writing thousands of testsThe lazy programmer's guide to writing thousands of tests
The lazy programmer's guide to writing thousands of testsScott Wlaschin
 
Composition birds-and-recursion
Composition birds-and-recursionComposition birds-and-recursion
Composition birds-and-recursionDavid Atchley
 
Resource wrappers in C++
Resource wrappers in C++Resource wrappers in C++
Resource wrappers in C++Ilio Catallo
 
An introduction to property based testing
An introduction to property based testingAn introduction to property based testing
An introduction to property based testingScott Wlaschin
 
C aptitude.2doc
C aptitude.2docC aptitude.2doc
C aptitude.2docSrikanth
 

What's hot (20)

Advanced JavaScript
Advanced JavaScript Advanced JavaScript
Advanced JavaScript
 
Intro to Functional Programming
Intro to Functional ProgrammingIntro to Functional Programming
Intro to Functional Programming
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional Programming
 
Introduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScriptIntroduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScript
 
State Monad
State MonadState Monad
State Monad
 
Programmation fonctionnelle Scala
Programmation fonctionnelle ScalaProgrammation fonctionnelle Scala
Programmation fonctionnelle Scala
 
Monadic Java
Monadic JavaMonadic Java
Monadic Java
 
Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)
 
Why we cannot ignore Functional Programming
Why we cannot ignore Functional ProgrammingWhy we cannot ignore Functional Programming
Why we cannot ignore Functional Programming
 
Introduction to Recursion (Python)
Introduction to Recursion (Python)Introduction to Recursion (Python)
Introduction to Recursion (Python)
 
Functional programming ii
Functional programming iiFunctional programming ii
Functional programming ii
 
Functional programming
Functional programmingFunctional programming
Functional programming
 
Jumping-with-java8
Jumping-with-java8Jumping-with-java8
Jumping-with-java8
 
Java concepts and questions
Java concepts and questionsJava concepts and questions
Java concepts and questions
 
The lazy programmer's guide to writing thousands of tests
The lazy programmer's guide to writing thousands of testsThe lazy programmer's guide to writing thousands of tests
The lazy programmer's guide to writing thousands of tests
 
Composition birds-and-recursion
Composition birds-and-recursionComposition birds-and-recursion
Composition birds-and-recursion
 
Resource wrappers in C++
Resource wrappers in C++Resource wrappers in C++
Resource wrappers in C++
 
An introduction to property based testing
An introduction to property based testingAn introduction to property based testing
An introduction to property based testing
 
Computer Programming- Lecture 6
Computer Programming- Lecture 6Computer Programming- Lecture 6
Computer Programming- Lecture 6
 
C aptitude.2doc
C aptitude.2docC aptitude.2doc
C aptitude.2doc
 

Similar to Functional Concepts for OOP Developers

Introduction To Lisp
Introduction To LispIntroduction To Lisp
Introduction To Lispkyleburton
 
Subtle Asynchrony by Jeff Hammond
Subtle Asynchrony by Jeff HammondSubtle Asynchrony by Jeff Hammond
Subtle Asynchrony by Jeff HammondPatrick Diehl
 
Scala + WattzOn, sitting in a tree....
Scala + WattzOn, sitting in a tree....Scala + WattzOn, sitting in a tree....
Scala + WattzOn, sitting in a tree....Raffi Krikorian
 
Brief introduction to Algorithm analysis
Brief introduction to Algorithm analysis Brief introduction to Algorithm analysis
Brief introduction to Algorithm analysis Anantha Ramu
 
C Programming Interview Questions
C Programming Interview QuestionsC Programming Interview Questions
C Programming Interview QuestionsGradeup
 
F# Presentation
F# PresentationF# Presentation
F# Presentationmrkurt
 
Lisp and prolog in artificial intelligence
Lisp and prolog in artificial intelligenceLisp and prolog in artificial intelligence
Lisp and prolog in artificial intelligenceArtiSolanki5
 
Class 16: Making Loops
Class 16: Making LoopsClass 16: Making Loops
Class 16: Making LoopsDavid Evans
 
Thinking Functionally In Ruby
Thinking Functionally In RubyThinking Functionally In Ruby
Thinking Functionally In RubyRoss Lawley
 
Introduction to PyTorch
Introduction to PyTorchIntroduction to PyTorch
Introduction to PyTorchJun Young Park
 
Lisp Macros in 20 Minutes (Featuring Clojure)
Lisp Macros in 20 Minutes (Featuring Clojure)Lisp Macros in 20 Minutes (Featuring Clojure)
Lisp Macros in 20 Minutes (Featuring Clojure)Phil Calçado
 
Learn basics of Clojure/script and Reagent
Learn basics of Clojure/script and ReagentLearn basics of Clojure/script and Reagent
Learn basics of Clojure/script and ReagentMaty Fedak
 

Similar to Functional Concepts for OOP Developers (20)

Introduction To Lisp
Introduction To LispIntroduction To Lisp
Introduction To Lisp
 
Subtle Asynchrony by Jeff Hammond
Subtle Asynchrony by Jeff HammondSubtle Asynchrony by Jeff Hammond
Subtle Asynchrony by Jeff Hammond
 
Writing Macros
Writing MacrosWriting Macros
Writing Macros
 
Scala + WattzOn, sitting in a tree....
Scala + WattzOn, sitting in a tree....Scala + WattzOn, sitting in a tree....
Scala + WattzOn, sitting in a tree....
 
Matlab1
Matlab1Matlab1
Matlab1
 
Scala @ TomTom
Scala @ TomTomScala @ TomTom
Scala @ TomTom
 
Clojure basics
Clojure basicsClojure basics
Clojure basics
 
Brief introduction to Algorithm analysis
Brief introduction to Algorithm analysis Brief introduction to Algorithm analysis
Brief introduction to Algorithm analysis
 
presentation.pptx
presentation.pptxpresentation.pptx
presentation.pptx
 
Cpl
CplCpl
Cpl
 
C Programming Interview Questions
C Programming Interview QuestionsC Programming Interview Questions
C Programming Interview Questions
 
F# Presentation
F# PresentationF# Presentation
F# Presentation
 
Lisp and prolog in artificial intelligence
Lisp and prolog in artificial intelligenceLisp and prolog in artificial intelligence
Lisp and prolog in artificial intelligence
 
Fork Join (BeJUG 2012)
Fork Join (BeJUG 2012)Fork Join (BeJUG 2012)
Fork Join (BeJUG 2012)
 
Class 16: Making Loops
Class 16: Making LoopsClass 16: Making Loops
Class 16: Making Loops
 
Thinking Functionally In Ruby
Thinking Functionally In RubyThinking Functionally In Ruby
Thinking Functionally In Ruby
 
Introduction to PyTorch
Introduction to PyTorchIntroduction to PyTorch
Introduction to PyTorch
 
Groovy
GroovyGroovy
Groovy
 
Lisp Macros in 20 Minutes (Featuring Clojure)
Lisp Macros in 20 Minutes (Featuring Clojure)Lisp Macros in 20 Minutes (Featuring Clojure)
Lisp Macros in 20 Minutes (Featuring Clojure)
 
Learn basics of Clojure/script and Reagent
Learn basics of Clojure/script and ReagentLearn basics of Clojure/script and Reagent
Learn basics of Clojure/script and Reagent
 

Recently uploaded

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 

Recently uploaded (20)

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 

Functional Concepts for OOP Developers