Slide 1

Slide 1 text

©2024 Wantedly, Inc. ܧଓΦϖϨʔλͷ࿩ Shibuya.rb[:20240821] Aug 21, 2024 - Masayuki Mizuno

Slide 2

Slide 2 text

©2024 Wantedly, Inc. ࠓ೔࿩͢͜ͱ

Slide 3

Slide 3 text

©2024 Wantedly, Inc. ࠓ೔࿩͢͜ͱ Ϟνϕʔγϣϯ w ඇܾఆੑܭࢉͰͷίʔϧόοΫ஍ࠈ 3VCZʹ࣮૷͞Ε͍ͯΔܧଓΦϖϨʔλͷ঺հ w DBMMDDͷ঺հ DBMMDDҎ֎ͷܧଓΦϖϨʔλͷ঺հ w TIJGUSFTFUͷ঺հ w DBMMDDʹΑΔTIJGUSFTFUͷ࣮૷ w TIJGUSFTFUΛ༻͍ͨඇܾఆܭࢉͷ࣮૷

Slide 4

Slide 4 text

©2024 Wantedly, Inc. Ϟνϕʔγϣϯ

Slide 5

Slide 5 text

©2024 Wantedly, Inc. Ϟνϕʔγϣϯ doʙendͰωετΛਂͤͣ͘ίʔυยΛ੾Γग़͍ͨ͠ HaskellͷϦετϞφυతͳίʔυΛRubyͰॻ͘ͱίʔϧόοΫ஍ࠈʹͳͬͯ͠·͏

Slide 6

Slide 6 text

©2024 Wantedly, Inc. ϝλϓϩͰͷղܾ ੍ޚߏ଄ͷ࠶ൃ໌͕ඞཁ Ifจ౳͕ཉ͚͠Ε͹DSL͕ղऍͰ͖Δ΋ͷΛ৽͘͠༻ҙ͠ͳ͚Ε͹ͳΒͳ͍

Slide 7

Slide 7 text

©2024 Wantedly, Inc. ܧଓΦϖϨʔλͰͷղܾ ੍ޚߏ଄ͷ࠶ൃ໌͸ෆཁ ωετΛਂͤͣ͘ίʔυยΛ੾Γग़ͯ͠ϧʔϓ͍ͯ͠Δ

Slide 8

Slide 8 text

©2024 Wantedly, Inc. 3VCZʹ࣮૷͞Ε͍ͯΔܧଓΦϖϨʔλͷ঺հ

Slide 9

Slide 9 text

©2024 Wantedly, Inc. Rubyʹ࣮૷͞Ε͍ͯΔܧଓΦϖϨʔλ: call/cc ܧଓʢͦΕҎ߱ͷܭࢉʣΛશͯ੾Γग़ͯ͠ଋറ͢Δ setjmpతͳΠϝʔδ https://docs.ruby-lang.org/ja/latest/class/Continuation.html ΑΓ

Slide 10

Slide 10 text

©2024 Wantedly, Inc. ܧଓΦϖϨʔλͰͷղܾ࠶ܝ call/ccͰ੾Γग़ͨ͠ίʔυยΛԿ౓΋ݺͼग़͍ͯ͠Δ call/ccͰ͸ߦ͖ͬͨΓ໭ͬͯ͜ͳ͍ͷͰɺ໭Γઌ΋call/ccͰొ࿥͍ͯ͠Δ

Slide 11

Slide 11 text

©2024 Wantedly, Inc. call/ccͷ໰୊఺ ඞཁҎ্ʹେ͖ͳίʔυยΛ੾Γग़ͯ͠͠·͏ endҎ߱ͷίʔυ΋੾Γग़ͯ͠͠·͏ͷͰɺద౰ͳॴͰଧͪࢭΊʹ͢ΔͨΊʹcall/cc͕2ճඞཁ

Slide 12

Slide 12 text

©2024 Wantedly, Inc. DBMMDDҎ֎ͷܧଓΦϖϨʔλͷ঺հ

Slide 13

Slide 13 text

©2024 Wantedly, Inc. call/ccҎ֎ͷܧଓΦϖϨʔλ: shift/reset shift͔Βreset·ͰͷؒͷίʔυยΛ੾Γग़͢ ߦ͖ͬͨΓ໭ͬͯ͜ͳ͍call/ccͱҧ͍ɺresetʹ౸ୡͨ͠Β໭͖ͬͯͯ͘ΕΔ

Slide 14

Slide 14 text

©2024 Wantedly, Inc. call/ccʹΑΔshift/resetͷ࣮૷ άϩʔόϧม਺ͱcall/ccͰshift/reset͸࣮૷Մೳ ໭ΓઌΛ͓֮͑ͯͨ͘Ίͷάϩʔόϧม਺͸ඞཁ https://okmij.org/ftp/continuations/shift-reset.scm ͷScheme࣮૷ΛRubyʹ຋Ҋͨ͠΋ͷ

Slide 15

Slide 15 text

©2024 Wantedly, Inc. shift/resetΛ༻͍ͨඇܾఆੑܭࢉͷ࣮૷ ૂͬͨίʔυย͚ͩऔΓग़ͤΔͷͰɺ࣮૷͕γϯϓϧ resetͰ໭ͬͯ͘ΕΔͷͰɺflat_map͕ͦͷ··࢖͑Δ

Slide 16

Slide 16 text

©2024 Wantedly, Inc. ·ͱΊ

Slide 17

Slide 17 text

©2024 Wantedly, Inc. ·ͱΊ 3VCZʹ࣮૷͞Ε͍ͯΔܧଓΦϖϨʔλͷ঺հ w DBMMDDΛ࢖͑͹ɺͦΕҎ߱શ෦ͷίʔυยΛ੾Γग़ͤΔ DBMMDDҎ֎ͷܧଓΦϖϨʔλͷ঺հ w TIJGUSFTFUͷ঺հ w TIJGUʙSFTFUͷؒͷίʔυยΛ੾Γग़ͤΔ w DBMMDDʹΑΔTIJGUSFTFUͷ࣮૷ w TIJGUSFTFUΛ༻͍ͨඇܾఆܭࢉͷ࣮૷ w ಛఆ۠ؒͷίʔυยΛ੾Γग़ͤΔͷͰɺ࣮૷͕γϯϓϧʹ w DBMMDDͳΜ͔ΑΓTIJGUSFTFUͷํΛQSJNJUJWFͱ࣮ͯ͠૷ͯ͘͠Ε·ͤΜ͔Ͷʜ