tuOkaerF @ aratarih

レンズ
danoM::ataD

圏論好き
モナモナ言うモナド入門

aratarih@

自己紹介
モナドの話しかしない
おじさん?
sdanom tuoba gniklat potS
sdanomoc tuoba klaT
arbeglaoc danomoc etatsoc si snel
sn e l

データ構造の一部に注目
オブジェクトのフィールドに注目
セッターとゲッターの組
ネストするデータ構造
nm =cmi.eAto(.eNm(
ae
omtgtuhr)gtae)
cmi.eAto(.eNm(hrtr"
omtgtuhr)stae"iaaa)
イミュータブルの場合
セッターは新しいインスタンスを返す。
ato
uhr
=cmi.eAto(
omtgtuhr)
nwuhr=ato.eNm(hrtr"
eAto
uhrstae"iaaa)
nwomt=cmi.eAto(eAto)
eCm...
sn e l

n m というレンズの、s t n m がセッター、g t n m が
ae
e ae
e ae
ゲッター。
nwuhr=(e nm)ato "iaaa
eAto
st ae uhr hrtr"
の合成

sn e l

合成演算を定義すれば、ネストした先のデータを簡単に更新
できる。
nwomt=(e (ae.ato) cmi "iaaa
eCmi
st nm
uhr) omt hrtr"

n m . a t o は作者の名前に注目...
sn e l

様々な

の実装

Ln {e : s- v st: s- v- s
es gt :
> , e :
>
> }
直感的
s- (,v- s
> v
> )

arbeglaoc danomoc etatsoc

Fntrf= ...
と

の関係

.2

.1

Ln {e : s- v st: s- v- s
es gt :
> , e :
>
> }
s- (,v- s
> v
> )
Fntrf= ( - fv - s- fs
uco
> v >
) >
>
は直積...
.3

と

の関係

.2

Ln {e : s- v st: s- v- s
es gt :
> , e :
>
> }
s- (,v- s
> v
> )
Fntrf= ( - fv - s- fs
uco
> v >
) >
>
米田の...
VF

V

) F ,)

, V(

× V(

steS

積と冪が随伴の関係であることから、
V

XF

V

VF

)

F

V ,)

V

, V(

X

として を用いると、
)

F

V ,)

, X(

(

(...
)S

V( × V

))S(

,)

なる関手を用いれば、
SG

GS

))S(
)S

,)
)X
,)

,)

V( × V(
V( × V
, G(

, G(

steS(
steS(

steS(

steS

s teS...
)S

つまり、F n t r f = ( - f v - f s
uco
> v >
) >
と( , v > )
v - s は同値。
))S(

V( × V

V( × V

)S

))S(

,) V(

V(

ste S

s ...
trapretnuoc eht fo ,etisoppo eht fo )scitamehtam(

laud

-o c

「反対」という意味。ほとんどの場合は

な概念。

とは
M

MM

M

M

MM

MMM
M

M

danom

MM
M

M
M
W

WW

W

W

WW

W

WWW

W

danomo c

W

WW

W

W
X
h

XM

X

X

X

h

h

XM

X

1

ar b eg l a

XM : h

XM
X

XMM

hM

と

の組。

0

X
X
h

XW
1

X

X

X

XW

h

h

XW
X : h

XW
X

hW

ar b eg l ao c

XWW

と

の組。

0

X
S)) V ×

(

)
V × S

V(( =
V = S VM

danom e ta t s
積と冪の合成。
X))

V(

)V ×

V × )S

(( =
V( = S V W

danomo c e ta t so c
冪と積の合成。
ar b eg l ao c d a nomo c e t a t so c
) V × )S

V((

S = S VW

S

dt CSaevs=CSae( - s v
aa ott
ott v > )
casCmndwwee
ls o...
u s l tes = u )v s l tes( l tes
v = )v s l tes( l teg
s = )s l teg( s l tes

arbeglaoc danomoc

sn eL
、

の定義から、以下が成り立つ。

が...
adenoY dna ,serotS ,sesneL

nevohraaL nav nawT

表現は米田の補題から導ける

danomoc etatsoc eht rof sarbeglaoc eht era sesneL

arbeglao...
Upcoming SlideShare
Loading in...5
×

レンズ (ぶつかり稽古の没プレゼン)

839

Published on

結局使わなかったプレゼンなので、どこかで話せれば。 (Japanese only)

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
839
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "レンズ (ぶつかり稽古の没プレゼン)"

  1. 1. tuOkaerF @ aratarih レンズ
  2. 2. danoM::ataD 圏論好き モナモナ言うモナド入門 aratarih@ 自己紹介
  3. 3. モナドの話しかしない おじさん?
  4. 4. sdanom tuoba gniklat potS
  5. 5. sdanomoc tuoba klaT
  6. 6. arbeglaoc danomoc etatsoc si snel
  7. 7. sn e l データ構造の一部に注目 オブジェクトのフィールドに注目 セッターとゲッターの組
  8. 8. ネストするデータ構造 nm =cmi.eAto(.eNm( ae omtgtuhr)gtae) cmi.eAto(.eNm(hrtr" omtgtuhr)stae"iaaa)
  9. 9. イミュータブルの場合 セッターは新しいインスタンスを返す。 ato uhr =cmi.eAto( omtgtuhr) nwuhr=ato.eNm(hrtr" eAto uhrstae"iaaa) nwomt=cmi.eAto(eAto) eCmi omtstuhrnwuhr
  10. 10. sn e l n m というレンズの、s t n m がセッター、g t n m が ae e ae e ae ゲッター。 nwuhr=(e nm)ato "iaaa eAto st ae uhr hrtr"
  11. 11. の合成 sn e l 合成演算を定義すれば、ネストした先のデータを簡単に更新 できる。 nwomt=(e (ae.ato) cmi "iaaa eCmi st nm uhr) omt hrtr" n m . a t o は作者の名前に注目するレンズ。通常のフ ae uhr ィールドと同じように値をセットできる。
  12. 12. sn e l 様々な の実装 Ln {e : s- v st: s- v- s es gt : > , e : > > } 直感的 s- (,v- s > v > ) arbeglaoc danomoc etatsoc Fntrf= ( - fv - s- fs uco > v > ) > > の の実装に近い snel lleksaH .1 .2 .3
  13. 13. と の関係 .2 .1 Ln {e : s- v st: s- v- s es gt : > , e : > > } s- (,v- s > v > ) Fntrf= ( - fv - s- fs uco > v > ) > > は直積 g t s t であり、同値。 e e > , < .2 s > tes, teg< tes s v )s dns v ,v ( teg ts f v .3 .2 .1
  14. 14. .3 と の関係 .2 Ln {e : s- v st: s- v- s es gt : > , e : > > } s- (,v- s > v > ) Fntrf= ( - fv - s- fs uco > v > ) > > 米田の補題を二回使うことで同値。 XF ) F ,) , X( ) , X( steS F ( steS .3 .2 .1
  15. 15. VF V ) F ,) , V( × V( steS 積と冪が随伴の関係であることから、 V XF V VF ) F V ,) V , V( X として を用いると、 ) F V ,) , X( ( ( steS steS について、 考えると米田の補題より、 XF V X steS : F 任意の関手 なる関手を
  16. 16. )S V( × V ))S( ,) なる関手を用いれば、 SG GS ))S( )S ,) )X ,) ,) V( × V( V( × V , G( , G( steS( steS( steS( steS s teS X s teS s teS なる関手を と、米田の補題より、 SG = G S steS G として、 steS steS steS : S 一方、 と定義する
  17. 17. )S つまり、F n t r f = ( - f v - f s uco > v > ) > と( , v > ) v - s は同値。 ))S( V( × V V( × V )S ))S( ,) V( V( ste S s teS steS 先に示しておいた関係により、 ,) ,) , V(steS × V( steS s teS steS( ste S s teS steS  を とすれば、
  18. 18. trapretnuoc eht fo ,etisoppo eht fo )scitamehtam( laud -o c 「反対」という意味。ほとんどの場合は な概念。 とは
  19. 19. M MM M M MM MMM M M danom MM M M M
  20. 20. W WW W W WW W WWW W danomo c W WW W W
  21. 21. X h XM X X X h h XM X 1 ar b eg l a XM : h XM X XMM hM と の組。 0 X
  22. 22. X h XW 1 X X X XW h h XW X : h XW X hW ar b eg l ao c XWW と の組。 0 X
  23. 23. S)) V × ( ) V × S V(( = V = S VM danom e ta t s 積と冪の合成。
  24. 24. X)) V( )V × V × )S (( = V( = S V W danomo c e ta t so c 冪と積の合成。
  25. 25. ar b eg l ao c d a nomo c e t a t so c ) V × )S V(( S = S VW S dt CSaevs=CSae( - s v aa ott ott v > ) casCmndwwee ls ooa hr etat: ws- s xrc : > dpiae: ws- w( s ulct : > w ) isac Cmnd(ott s wee ntne ooa CSae ) hr -etat: ( - s v - s -xrc : v > , ) > etat(ott fv =fv xrc CSae ) -dpiae: ( - s v - ( - ( - s v,v -ulct : v > , ) > v > v > , ) ) dpiae(ott fv =CSae(u- CSaefu v ulct CSae ) ott > ott ) s- ( - s v > v > , ) tp Ln sv=s- CSaevs ye es > ott
  26. 26. u s l tes = u )v s l tes( l tes v = )v s l tes( l teg s = )s l teg( s l tes arbeglaoc danomoc sn eL 、 の定義から、以下が成り立つ。 が満たす性質
  27. 27. adenoY dna ,serotS ,sesneL nevohraaL nav nawT 表現は米田の補題から導ける danomoc etatsoc eht rof sarbeglaoc eht era sesneL arbeglaoc danomoc sneL の満たすべき性質は の性質である まとめ
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×