SlideShare a Scribd company logo
1 of 34
Download to read offline
Math::Category
id:hiratara

2009-11-21
Math::Category   (1)


✤   Perl

✤




✤




✤
Math::Category           (2)

✤




    ✤   dom, cod, comp

✤




    ✤        Hom

✤
(1)

✤




✤




✤   Morphism                      interface

    ✤   source: dom           Morphism

    ✤   target: cod          Morphism

    ✤   composition:
(2)

✤




    ✤   target source

    ✤   composition

✤




    ✤




    ✤
(1): SimpleMorphism

✤   2                      1

✤   simple_morph ‘1’ => ‘2’;                           ‘1’

    ✤   source   simple_morph ‘1’ => ‘1’                        ‘2’

    ✤   target   simple_morph ‘2’ => ‘2’                              ‘3’

    ✤   (simple_morph ‘2’ => ‘3’) . (simple_morph ‘1’ => ‘2’)
        = (simple_morph ‘1’ => ‘3’)
(2): SubroutineMorphism(1)

✤   Perl

✤   Perl

    ✤


                                                           print
✤   sub_morph { $_[0] * 2 }
                                                              undef
✤   source target             sub_morph { @_ } (   )

    ✤                                                  (      )
(2): SubroutineMorphism(2)


✤       $sub2 . $sub1   $sub1   $sub2

    ✤




    ✤




✤
(1)

✤   f.(g.h)        (f . g) . h    f       g       h

    ✤




    ✤   id                            (       )

✤




    ✤   f×g: x → ( f(x), g(x) )
(2)

A×B              πA πB                          C
( f, g ): f, g                       2

                         f                                           g
                                         ( f, g )




         A               πA
                                          A×B                   πB
                                                                           B
                 (f,g)       f   g
                                                    (f,g)   (g,f)
(3):

✤          : bi_morph $morph1, $morph2;   (A1, A2)
    ✤   source target                            (f, g)

                                               (B1, B2)
✤          : op $morph;
                                           B
    ✤   source targe                            f
    ✤   op op $morph;     $morph
                                                     A
(1)


✤   Functor

    ✤




    ✤   Morphism         Morphism

✤


    (                               )
(2)


✤            functor { ... };

    ✤


        (Morphism                  OK)

    ✤




✤                                ( $functor2 . $functor1 )
(1): $BI_FUNCTOR


✤   Hom(-, -)

    ✤   C^op × C      Sets

    ✤   C^op × C

    ✤   Sets    SubroutineMorphism
        (                            Sets   )
(1)



✤   NaturalTransformation

    ✤




    ✤                             (Morphism)
(2)

✤               nat { };

    ✤




    ✤




    ✤       (      )

        ✤
(3)


✤




    ✤   $nat2 . $nat1

    ✤   $funct . $nat


    ✤   $nat . $funct
(4): FunctorMorphism

✤




✤   functor_morph nat {               F
      my $id = shift;
      ...  ...
         return $sum_morph
                                          τ
    };

✤   source target            source
                                              G
         target
(2): $YONEDA_EMBEDDING


✤




    ✤   C^op           Sets^C

    ✤          Hom(g, -)
: CPS   (1)

✤   uc   CPS
: CPS            (2)




                                 Sets
      Hom(        , -)    Hom(          , undef)
                                                   ∈
                                                        print




uc   $fun_morph           $cps_uc
                                               $cps_uc->(print)




                                              ∈
      Hom(        , -)    Hom(          , undef)
Monad                            (1)

✤             functor            eta   mu

    ✤   eta: I → T, mu: TT → T

    ✤




✤   Haskell                                 Monad

    ✤
Monad                      (2)

✤           1.
    $monad->mu . (funct_nat $monad->functor, $monad->eta)
    $monad->mu . (nat_funct $monad->eta, $monad->functor)
            T→T

✤           2.
    $monad->mu . (funct_nat $monad->functor, $monad->mu)
    $monad->mu . (nat_funct $monad->mu, $monad->functor)
           (         TTT → T           )
Monad                     (1): $LIST_MONAD


✤




✤


    [v1_1, v1_2, v1_3], [v2_1, v2_2], [v3_1, v3_2, v3_3, v3_4]


✤            map eta       []              mu     concat
Monad                     (2): $STATE_MONAD


✤




✤


    sub { my @states = @_; ..    .. return ¥@values, ¥@new_states }
                  1

✤   functor, eta, mu   Haskell                     (                  )
Monad           (3): Maybe



✤   Maybe           nothing

✤           (   )             null

✤   List
(5): KleisliMorphism

✤        m       f: a -> m b        b


mma                            mmb            mmc
                                         mg
                                                   μc


ma                             mb             mc
             f                           g
    ηa                              ηb             ηc

a                               b              c
(5): KleisliMorphism

✤        m       f: a -> m b        b


mma                            mmb            mmc
                                         mg
                                                   μc


ma                             mb             mc
             f                           g
    ηa                              ηb             ηc

a                               b              c
Kleisli                                   : Maybe                    (1)


✤                               HTML
    get_number: HTML                           (<span>3/10</span>)
    cut_tag:                (3/10)
    parse_number:               (3, 10)
    div:            (0.3)
                                           

✤                   NG
Kleisli   : Maybe   (2)

✤
Kleisli
 
                                  : Maybe   (2)
    
    
    
       
    
       
✤
Kleisli               : Maybe   (2)

✤   Maybe   Kleisli
Kleisli                   : Maybe   (2)

✤       Maybe   Kleisli
✤




✤




    ✤




    ✤       (   )

        ✤

More Related Content

Viewers also liked

すべてが@__kanになる
すべてが@__kanになるすべてが@__kanになる
すべてが@__kanになるMasahiro Honma
 
Stateモナドの解説 中編
Stateモナドの解説 中編Stateモナドの解説 中編
Stateモナドの解説 中編Masahiro Honma
 
Hachioji.pm in Machida の LT
Hachioji.pm in Machida の LTHachioji.pm in Machida の LT
Hachioji.pm in Machida の LTMasahiro Honma
 
Types and perl language
Types and perl languageTypes and perl language
Types and perl languageMasahiro Honma
 
カレーとHokkaidopm
カレーとHokkaidopmカレーとHokkaidopm
カレーとHokkaidopmMasahiro Honma
 
Stateモナドの解説 前編
Stateモナドの解説 前編Stateモナドの解説 前編
Stateモナドの解説 前編Masahiro Honma
 
Stateモナドの解説 後編
Stateモナドの解説 後編Stateモナドの解説 後編
Stateモナドの解説 後編Masahiro Honma
 
ウヰスキーとPSGI
ウヰスキーとPSGIウヰスキーとPSGI
ウヰスキーとPSGIMasahiro Honma
 
レンズ (ぶつかり稽古の没プレゼン)
レンズ (ぶつかり稽古の没プレゼン)レンズ (ぶつかり稽古の没プレゼン)
レンズ (ぶつかり稽古の没プレゼン)Masahiro Honma
 
循環参照のはなし
循環参照のはなし循環参照のはなし
循環参照のはなしMasahiro Honma
 
Monads in python
Monads in pythonMonads in python
Monads in pythoneldariof
 
モナモナ言うモナド入門
モナモナ言うモナド入門モナモナ言うモナド入門
モナモナ言うモナド入門Masahiro Honma
 

Viewers also liked (20)

すべてが@__kanになる
すべてが@__kanになるすべてが@__kanになる
すべてが@__kanになる
 
Perl saved a lady.
Perl saved a lady.Perl saved a lady.
Perl saved a lady.
 
Stateモナドの解説 中編
Stateモナドの解説 中編Stateモナドの解説 中編
Stateモナドの解説 中編
 
20120526 hachioji.pm
20120526 hachioji.pm20120526 hachioji.pm
20120526 hachioji.pm
 
Hachioji.pm in Machida の LT
Hachioji.pm in Machida の LTHachioji.pm in Machida の LT
Hachioji.pm in Machida の LT
 
Types and perl language
Types and perl languageTypes and perl language
Types and perl language
 
TraitとMoose::Role
TraitとMoose::RoleTraitとMoose::Role
TraitとMoose::Role
 
カレーとHokkaidopm
カレーとHokkaidopmカレーとHokkaidopm
カレーとHokkaidopm
 
Stateモナドの解説 前編
Stateモナドの解説 前編Stateモナドの解説 前編
Stateモナドの解説 前編
 
Stateモナドの解説 後編
Stateモナドの解説 後編Stateモナドの解説 後編
Stateモナドの解説 後編
 
定理3
定理3定理3
定理3
 
Monads in perl
Monads in perlMonads in perl
Monads in perl
 
ウヰスキーとPSGI
ウヰスキーとPSGIウヰスキーとPSGI
ウヰスキーとPSGI
 
レンズ (ぶつかり稽古の没プレゼン)
レンズ (ぶつかり稽古の没プレゼン)レンズ (ぶつかり稽古の没プレゼン)
レンズ (ぶつかり稽古の没プレゼン)
 
AnyEvent and Plack
AnyEvent and PlackAnyEvent and Plack
AnyEvent and Plack
 
Arrows in perl
Arrows in perlArrows in perl
Arrows in perl
 
循環参照のはなし
循環参照のはなし循環参照のはなし
循環参照のはなし
 
Levenshtein Automata
Levenshtein AutomataLevenshtein Automata
Levenshtein Automata
 
Monads in python
Monads in pythonMonads in python
Monads in python
 
モナモナ言うモナド入門
モナモナ言うモナド入門モナモナ言うモナド入門
モナモナ言うモナド入門
 

Recently uploaded

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
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
 
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
 
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
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
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
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
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
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 

Recently uploaded (20)

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
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
 
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.
 
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
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
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...
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
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
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 

Perl Math Category Module Provides Category Theory Concepts

  • 2. Math::Category (1) ✤ Perl ✤ ✤ ✤
  • 3. Math::Category (2) ✤ ✤ dom, cod, comp ✤ ✤ Hom ✤
  • 4. (1) ✤ ✤ ✤ Morphism interface ✤ source: dom Morphism ✤ target: cod Morphism ✤ composition:
  • 5. (2) ✤ ✤ target source ✤ composition ✤ ✤ ✤
  • 6. (1): SimpleMorphism ✤ 2 1 ✤ simple_morph ‘1’ => ‘2’; ‘1’ ✤ source simple_morph ‘1’ => ‘1’ ‘2’ ✤ target simple_morph ‘2’ => ‘2’ ‘3’ ✤ (simple_morph ‘2’ => ‘3’) . (simple_morph ‘1’ => ‘2’) = (simple_morph ‘1’ => ‘3’)
  • 7. (2): SubroutineMorphism(1) ✤ Perl ✤ Perl ✤ print ✤ sub_morph { $_[0] * 2 } undef ✤ source target sub_morph { @_ } ( ) ✤ ( )
  • 8. (2): SubroutineMorphism(2) ✤ $sub2 . $sub1 $sub1 $sub2 ✤ ✤ ✤
  • 9. (1) ✤ f.(g.h) (f . g) . h f g h ✤ ✤ id ( ) ✤ ✤ f×g: x → ( f(x), g(x) )
  • 10. (2) A×B πA πB C ( f, g ): f, g 2 f g ( f, g ) A πA A×B πB B (f,g) f g (f,g) (g,f)
  • 11. (3): ✤ : bi_morph $morph1, $morph2; (A1, A2) ✤ source target (f, g) (B1, B2) ✤ : op $morph; B ✤ source targe f ✤ op op $morph; $morph A
  • 12. (1) ✤ Functor ✤ ✤ Morphism Morphism ✤ ( )
  • 13. (2) ✤ functor { ... }; ✤ (Morphism OK) ✤ ✤ ( $functor2 . $functor1 )
  • 14. (1): $BI_FUNCTOR ✤ Hom(-, -) ✤ C^op × C Sets ✤ C^op × C ✤ Sets SubroutineMorphism ( Sets )
  • 15. (1) ✤ NaturalTransformation ✤ ✤ (Morphism)
  • 16. (2) ✤ nat { }; ✤ ✤ ✤ ( ) ✤
  • 17. (3) ✤ ✤ $nat2 . $nat1 ✤ $funct . $nat ✤ $nat . $funct
  • 18. (4): FunctorMorphism ✤ ✤ functor_morph nat { F my $id = shift; ... ... return $sum_morph τ }; ✤ source target source G target
  • 19. (2): $YONEDA_EMBEDDING ✤ ✤ C^op Sets^C ✤ Hom(g, -)
  • 20. : CPS (1) ✤ uc CPS
  • 21. : CPS (2) Sets Hom( , -) Hom( , undef) ∈ print uc $fun_morph $cps_uc $cps_uc->(print) ∈ Hom( , -) Hom( , undef)
  • 22. Monad (1) ✤ functor eta mu ✤ eta: I → T, mu: TT → T ✤ ✤ Haskell Monad ✤
  • 23. Monad (2) ✤ 1. $monad->mu . (funct_nat $monad->functor, $monad->eta) $monad->mu . (nat_funct $monad->eta, $monad->functor) T→T ✤ 2. $monad->mu . (funct_nat $monad->functor, $monad->mu) $monad->mu . (nat_funct $monad->mu, $monad->functor) ( TTT → T )
  • 24. Monad (1): $LIST_MONAD ✤ ✤ [v1_1, v1_2, v1_3], [v2_1, v2_2], [v3_1, v3_2, v3_3, v3_4] ✤ map eta [] mu concat
  • 25. Monad (2): $STATE_MONAD ✤ ✤ sub { my @states = @_; .. .. return ¥@values, ¥@new_states } 1 ✤ functor, eta, mu Haskell ( )
  • 26. Monad (3): Maybe ✤ Maybe nothing ✤ ( ) null ✤ List
  • 27. (5): KleisliMorphism ✤ m f: a -> m b b mma mmb mmc mg μc ma mb mc f g ηa ηb ηc a b c
  • 28. (5): KleisliMorphism ✤ m f: a -> m b b mma mmb mmc mg μc ma mb mc f g ηa ηb ηc a b c
  • 29. Kleisli : Maybe (1) ✤ HTML get_number: HTML (<span>3/10</span>) cut_tag: (3/10) parse_number: (3, 10) div: (0.3) ✤ NG
  • 30. Kleisli : Maybe (2) ✤
  • 31. Kleisli : Maybe (2) ✤
  • 32. Kleisli : Maybe (2) ✤ Maybe Kleisli
  • 33. Kleisli : Maybe (2) ✤ Maybe Kleisli
  • 34. ✤ ✤ ✤ ✤ ( ) ✤