Slide 1

Slide 1 text

2012/02/06 ৹ࠪ ݶఆܧଓ౉͠ม׵ ͱରԠ͢ΔܕγεςϜ 45-096023 ௗӽ وஐ

Slide 2

Slide 2 text

ൃදͷྲྀΕ 1. ෼໺ͷ঺հͱઌߦݚڀ 2. ຊݚڀͷओཁ෦ 3. ূ໌ͨ͠ఆཧ 4. ·ͱΊ

Slide 3

Slide 3 text

ܧଓ(Continuation) • ܧଓ ʹ ͜Ε͔ΒߦΘΕΔ༧ఆͷܭࢉ • ίϯτϩʔϧΦϖϨʔλ ʹ ܧଓΛૢ࡞ † ؔ਺ܕݴޠʹ͓͚Δ༻ޠ † खଓ͖ܕݴޠͰ͍͏ͱ͜Ζͷgotoจ • Ԡ༻ɿ୤ग़ͱ࠶ೖ ɹɹɹίϧʔνϯ ɹɹɹόοΫτϥοΫ ɹɹɹϚϧνλεΫ

Slide 4

Slide 4 text

ݶఆܧଓ(Delimited Continuation) • ੍ޚޮՌ ʹ ܧଓͷૢ࡞ʹΑΔӨڹ † ੍ޚޮՌ͸ڧྗͳ୅ΘΓʹةݥੑ͕͋Δ • ݶఆܧଓ ʹ ੍ޚޮՌͷٴͿൣғΛݶఆ • ຊݚڀͰओʹѻ͏ܭࢉϞσϧ͸ λS ܭࢉ ʹ λܭࢉ ʴ ɹɹɹɹɹίϯτϩʔϧΦϖϨʔλshift/reset

Slide 5

Slide 5 text

ߏจͱ؆໿نଇ • λܭࢉͷߏจʹ௥Ճ Sα.t † shift ʹΑͬͯܧଓͷม਺ α Λந৅ t † resetʹΑͬͯܧଓͷൣғΛݶఆ • λܭࢉͷ؆໿نଇʹ௥Ճ E[Sα.t] → t{α := λx. E[x] } † ݶఆܧଓ E ͷ୅ೖ v → v † ໾ׂΛՌͨͨ͠resetΛࣺͯΔ

Slide 6

Slide 6 text

ैདྷͷܕγεςϜ . . . Γ, α : V/X → W/X Y t : Y Z Γ W Sα.t : V Z Γ V t : V W Γ X t : W X Γ Z s : V/X → W/Y A Γ Y t : V Z Γ X st : W A • CPS(ܧଓ౉͠)ม׵ͨ͠ઌͷλܭࢉʹ͓͚Δ ܕ෇͚ΛҾ͖໭ͯ͠දهΛมߋͨ͠΋ͷ

Slide 7

Slide 7 text

ैདྷͷܕ෇͚ͷྫ • sortɿ੔਺ϦετΛड͚ͱΓ੔਺ϦετΛฦ͢ ੍ޚޮՌͷͳ͍ؔ਺ Y sort : [Int]/X → [Int]/X Y † X ͱY ͸೚ҙ † ෆඞཁʹଟ૬తͳܕ৘ใؚ͕·Ε͍ͯΔ

Slide 8

Slide 8 text

ैདྷͷܕγεςϜͷ໰୊఺ • ظ଴͞ΕΔܕ෇͚͕Ͱ͖ͳ͍͜ͱ͕͋Δ ܕͷଟ૬ੑͱந৅ͷଋറ͕িಥ † letଟ૬ʹΑͬͯղܾ͢Δ৔߹΋͋Δ͕ෆे෼ • ܕ͔Β੍ޚޮՌͷ༗ແΛ൑ผͰ͖ͳ͍ ෆཁͳܕ৘ใ͕अຐ † ΤϑΣΫτγεςϜʹΑΔ෼ੳ͸ᐆດ

Slide 9

Slide 9 text

ൃදͷྲྀΕ 1. ෼໺ͷ঺հͱઌߦݚڀ 2. ຊݚڀͷओཁ෦ 3. ূ໌ͨ͠ఆཧ 4. ·ͱΊ

Slide 10

Slide 10 text

ϝΠϯΞΠσΟΞ • ෆཁͳܕ৘ใΛ࡟আͯ͠ɼܕͷछྨΛ෼ྨ † ୅ΘΓʹܕ෇͚نଇ͕ෳࡶԽ T ::= ܕ V λܕ (V ⇒ V ) ↓ V S ܕ V ::= B | V → T λܕ • λ ܕ ʹ λ ʹΑΔந৅ʹରԠ • S ܕ ʹ shiftʹΑΔந৅ʹରԠ

Slide 11

Slide 11 text

ܕ෇͚Ͱ͖ΔΑ͏ʹͳΔྫ (λf. · · · mapRecip ( f (1) (Sα.t)) · · · mapRecip ( f (2) (Sα.t)) · · · ) sort • sort͕୅ೖ͞ΕΔೋΧॴͷf ͷܕ෇͚ʹண໨ Y f : [Int]/X → [Int]/X Y † ܕ෇͚نଇΑΓ৚݅(1) X = [Ratio]ɼ(2) X = [Double] † ಉҰͷଋറม਺ʹର͢Δ৚݅ͳͷͰಉ࣌ʹຬͨͤͳ͍ X, Y Λ࡟আ ˝ λܕͷܗʹ f : [Int] → [Int]

Slide 12

Slide 12 text

৽ͨʹఏҊ͢ΔܕγεςϜ Γ Z s : V/X → W/Y A Γ Y t : V Z Γ X st : W A ద༻stͷܕ෇͚نଇ ˝ ࣣͭʹ৔߹෼͚ Γ s : V → T Γ t : V Γ st : T Γ s : V → W Γ t : V ⇒ X ↓ A Γ st : W ⇒ X ↓ A Γ s : V → (W ⇒ X ↓ Y ) Γ t : V ⇒ Y ↓ A Γ st : W ⇒ X ↓ A . . .

Slide 13

Slide 13 text

ରԠ͢ΔDCPS(ݶఆܧଓ౉͠)ม׵ [[st]] = λk.[[s]](λx.[[t]](λy.(xy)k)) ద༻stͷม׵ࣜ ˝ ࣣͭʹ৔߹෼͚ [[st]] = [[s]][[t]] [[st]] = λk.[[t]](λx.k([[s]]x)) [[st]] = λk.[[t]](λx.([[s]]x)k) . . . • CPSม׵͕ड͚౉͍ͯͨ͠ܧଓͷ͏ͪ ݶఆܧଓ͚ͩΛબผͨ͠ม׵

Slide 14

Slide 14 text

ൃදͷྲྀΕ 1. ෼໺ͷ঺հͱઌߦݚڀ 2. ຊݚڀͷओཁ෦ 3. ূ໌ͨ͠ఆཧ 4. ·ͱΊ

Slide 15

Slide 15 text

ఏҊ͢ΔܕγεςϜͷ҆શੑ • ʦ ܕͷอଘ ʧ Γ t : T ͔ͭt → t ͳΒ͹ɼΓ t : Tɽ • ʦ ܭࢉͷਐߦ ʧ 1. t : V ͳΒ͹ɼ t͸஋Ͱ͋Δ͔ɼt → t ͱͳΔt ͕ଘࡏ͢Δɽ 2. t : V ⇒ W ↓ X ͳΒ͹ɼ ೚ҙͷ E[t] : X ͳΔE ʹରͯ͠ɼ E[t] → sͱͳΔs͕ଘࡏ͢Δɽ † ิ୊Λ༻ҙͯ͠ɼݶఆܧଓͷ௕͞ʹΑΔؼೲ๏

Slide 16

Slide 16 text

ఏҊ͢ΔܕγεςϜͷ݈શੑ • ʦ ܕ෇͚ͷ݈શੑ ʧ Γ t : T ͳΒ͹ɼ[[Γ]] [[t]] : [[T ]]ɽ • ʦ ؆໿ͷ݈શੑ ʧ Γ t : T ͔ͭt → t ͳΒ͹ɼ( [t] )# →+ ( [t ] )#ɽ † ม׵( [ ] )# ͸DCPSม׵[[ ]]Λมܗͨ͠΋ͷ † ิ୊Λ༻ҙͯ͠ɼݶఆܧଓͷ௕͞ʹΑΔؼೲ๏ † ͜ͷఆཧΑΓɼܕ෇͖߲ͷڧਖ਼نԽੑ΋ূ໌

Slide 17

Slide 17 text

ܕͷछྨͱ੍ޚޮՌ • ʦ ਖ਼نܗ ʧ ैདྷͷܕγεςϜͰ͸ෆ੒ཱ t : T Ͱ͋Δͱ͖ɼ 1. T = BͳΒ͹ɼt →∗ cɽ 2. T = W → S ͳΒ͹ɼt →∗ λx.t1 ɽ 3. T = W ⇒ X ↓ AͳΒ͹ɼt →∗ E[Sα.t1 ]ɽ † ิ୊ͱڧਖ਼نԽੑΑΓূ໌ • ܭࢉΛਐΊΔͱ͍ͣΕ λ ܕͷ߲͸ɼλ ந৅ͷਖ਼نܗʹʢ੍ޚޮՌͳ͠ʣ S ܕͷ߲͸ɼS ந৅ͷਖ਼نܗʹʢ੍ޚޮՌ͋Γʣ

Slide 18

Slide 18 text

ൃදͷྲྀΕ 1. ෼໺ͷ঺հͱઌߦݚڀ 2. ຊݚڀͷओཁ෦ 3. ূ໌ͨ͠ఆཧ 4. ·ͱΊ

Slide 19

Slide 19 text

·ͱΊ • ৽ͨͳܕγεςϜΛߏங ରԠ͢ΔDCPSม׵΋৽ͨʹఆٛ • ܕγεςϜͷ҆શੑͱ݈શੑΛূ໌ † ਅͬ౰ͳܕγεςϜͰ͋Δͱ͍͏͜ͱ • ैདྷͷܕγεςϜͰ͸ܕ෇͚ΒΕͳ͔߲ͬͨ΋ ܕ෇͚Ͱ͖ΔΑ͏ʹͳͬͨ † ͨͩ͠ٯͷྫ΋ଘࡏ • ܕͷܗ͔Β੍ޚޮՌ͕൑ผͰ͖ΔΑ͏ʹͳͬͨ

Slide 20

Slide 20 text

ࠓޙͷ՝୊ • shift/resetҎ֎ͷίϯτϩʔϧΦϖϨʔλʹ΋ DCPSม׵ʹجͮ͘ܕγεςϜΛߏங͍ͨ͠ † ͋Δఔ౓ͷํ਑͸ࣔͨ͠ • ͱ͘ʹλµܭࢉͷCPSม׵͸ ݹయ࿦ཧΛ௚؍࿦ཧʹຒΊ͜ΉKolmogorovม ׵ͱରԠ͍ͯ͠Δ͜ͱΛ౿·͑Δͱ λµܭࢉͷDCPSม׵ͱରԠ͍ͯ͠Δͷ͸ʁ † ຒΊࠐΈʹඞཁͳೋॏ൱ఆ͚ͩΛ બผͨ͠Α͏ͳม׵ͱ༧૝