Documente Academic
Documente Profesional
Documente Cultură
, a
Traian Florin S, erbanut
FMI, UNIBUC
Departamentul de Informatica,
traian.serbanuta@fmi.unibuc.ro
27 noiembrie 2015
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
1 / 26
http://www.youtube.com/watch?v=eCUfzvz7Z20
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
2 / 26
Categorii
Categorii
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
3 / 26
Categorii
Categorii
O categorie C este data de:
O clasa |C| a obiectelor
, ilor / morfismelor
O clasa C a saget
saget
, i domeniul
Doua funct, ii dom, cod : C |C| care asociaza fiecarei
s, i codomeniul ei. Pentru orice obiecte A s, i B,
PDIntrare/Ies, ire
27 noiembrie 2015
4 / 26
Categorii
Categorii aseman
lui Set
Categoria grupurilor cu morfisme de grupuri
Categoria algebrelor de o signatura data
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
5 / 26
Categorii
Obiectele: tipuri
, iile: funct, ii ntre tipuri
Saget
f : : A > B
, i: funct, ia polimorfica id
Identitat
Prelude > : t i d
i d : : a > a
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
6 / 26
Categorii
atoare
Categorii neaseman
lui Set
Categoria unui graf (V , E )
Obiecte:
, i:
Saget
, i:
Identitat
Compunere:
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
7 / 26
Categorii
atoare
Categorii neaseman
lui Set
Categoria unui graf (V , E )
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
7 / 26
Categorii
atoare
Categorii neaseman
lui Set
Categoria unei relat, ii part, iale de ordine (S , )
Obiecte:
, i:
Saget
, i:
Identitat
Compunere:
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
8 / 26
Categorii
atoare
Categorii neaseman
lui Set
Categoria unei relat, ii part, iale de ordine (S , )
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
8 / 26
Categorii
atoare
Categorii neaseman
lui Set
Categoria asociata unui monoid (M , , e )
Obiecte:
, i:
Saget
, i:
Identitat
Compunere:
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
9 / 26
Categorii
atoare
Categorii neaseman
lui Set
Categoria asociata unui monoid (M , , e )
numim m
Obiecte: un singur obiect, sa-l
, i: Elementele lui M
Saget
, i: e
Identitat
Compunere:
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
9 / 26
Categorii
atoare
Categorii neaseman
lui Set
Categoria asociata unui monoid (M , , e )
numim m
Obiecte: un singur obiect, sa-l
, i: Elementele lui M
Saget
, i: e
Identitat
Compunere:
De fapt, merge s, i invers. . .
Monoidul asociat unei categorii cu un singur obiect |C| = {m}
M = C = C(m, m)
=
e = id m
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
9 / 26
Categorii
De ce categorii?
Compun rezolvarile
p1 ,. . . pn ntr-o rezolvare p pentru problema init, iala
Categoriile rezolva problema compunerii
datele
Ne fort, eaza sa abstractizam
, i (metode?)
Se poate act, iona asupra datelor doar prin saget
Fort, eaza un stil de compunere independent de structura obiectelor
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
10 / 26
Monoizi
Monoizi
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
11 / 26
Monoizi
Monoizi
Data.Monoid.Monoid
Monoidul listelor
instance Monoid [ a ] where
mempty = [ ]
mappend = ( + + )
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
12 / 26
Monoizi
Monoide booleene
Monoidul conjunctiv
Data.Monoid.All
newtype A l l = A l l { g e t A l l : : Bool }
instance Monoid A l l where
mempty = A l l True
A l l x mappend A l l y = A l l ( x && y )
Monoidul disjunctiv
Data.Monoid.Any
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
13 / 26
Monoizi
Monoide numerice
Monoidul aditiv
Data.Monoid.Sum
Monoidul multiplicativ
Data.Monoid.Product
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
14 / 26
Monoizi
Exemple
concat : : [ [ a ] ] > [ a ]
concat = foldMap i d
a l l : : [ Bool ] > Bool
a l l = g e t A l l . foldMap A l l
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
15 / 26
Monoizi
Monoidul endomorfismelor
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
16 / 26
Monoizi
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
17 / 26
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
18 / 26
Un obiect catre
care exista un singur morfism din orice alt obiect
O mult, ime singleton n categoria Set
PDIntrare/Ies, ire
27 noiembrie 2015
19 / 26
Dualitate
Dualitate
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
20 / 26
Dualitate
|Cop | = |C|
Cop = C
domCop = codomC
codomCop = domC
op
op
Identitat
aceleas, i
, ile de asociativitate
Se verifica proprietat
Orice proprietate poate fi dualizata
Obiect final este obiect init, ial n categoria duala
Obiect init, ial este obiect final n categoria duala
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
21 / 26
Izomorfism
Izomorfism
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
22 / 26
Izomorfism
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
23 / 26
Izomorfism
PDIntrare/Ies, ire
27 noiembrie 2015
23 / 26
Produse s, i coproduse
Produse s, i coproduse
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
24 / 26
Produse s, i coproduse
Produs
Produsul a doua obiecte a s, i b este obiectul c nzestrat cu doua proiect, ii
pa :: c > a s, i pb :: c > b astfel nct pentru orice alt obiect c nzestrat
cu doua proiect, ii pa :: c > a s, i pb :: c > b, exista un unic morfism
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
25 / 26
Produse s, i coproduse
Produs
Produsul a doua obiecte a s, i b este obiectul c nzestrat cu doua proiect, ii
pa :: c > a s, i pb :: c > b astfel nct pentru orice alt obiect c nzestrat
cu doua proiect, ii pa :: c > a s, i pb :: c > b, exista un unic morfism
m . pb = pb
type Product a b = ( a , b )
pa : : Product a b > a
pa = f s t
pb : : Product a b > b
pb = snd
F a c t o r i z a r e a
factor
: : ( c > a ) > ( c > b ) > ( c > Product a b )
f a c t o r pa pb x = ( pa x , pb x )
Avem
f s t . f a c t o r pa pb = pa
,a (UNIBUC)
Traian Florin S, erbanut
snd . f a c t o r pa pb = pb
PDIntrare/Ies, ire
27 noiembrie 2015
25 / 26
Produse s, i coproduse
Coproduse
adica
Coprodusul a doua obiecte a s, i b este produsul lor n categoria duala,
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
26 / 26
Produse s, i coproduse
Coproduse
adica
Coprodusul a doua obiecte a s, i b este produsul lor n categoria duala,
F a c t o r i z a r e a
factor
: : ( a > c ) > ( b > c ) > (Sum a b > c )
f a c t o r ia ib ( Left x ) = ia x
f a c t o r i a i b ( Right x ) = i b x
Avem
f a c t o r ia ib . i a = ia
f a c t o r ia ib . i b = ib
,a (UNIBUC)
Traian Florin S, erbanut
PDIntrare/Ies, ire
27 noiembrie 2015
26 / 26