Slide 1

Slide 1 text

)BTLFMMͷܕΫϥεͱ 5ZQFDMBTTPQFEJBͷ঺հ 8-5 !BNVUBLF@T

Slide 2

Slide 2 text

ܕΫϥε ܕʹڞ௨͢Δੑ࣭Λൈ͖ग़ͨ͠΋ͷ ΦϒδΣΫτࢦ޲ͷΫϥεͱ͸ҧ͏ͷͰ஫ҙ ܕΫϥε͸͍Ζ͍ΖͳݴޠͰ࢖͑Δ ͜ͷεϥΠυͰ͸)BTLFMMΛ࢖͏ ྫ &RΫϥε೚ҙͷͭͷ஋ʹ͍ͭͯ౳͍͔͠౳͘͠ͳ ͍͔Θ͔Δ 0SEΫϥε೚ҙͷͭͷ஋ʹ͍ͭͯॱংΛ͚ͭΒΕΔ 4IPXΫϥεจࣈྻʹม׵Ͱ͖Δ

Slide 3

Slide 3 text

ܕΫϥε *OU 'MPBU 3BUJPOBM %PVCMF

Slide 4

Slide 4 text

ܕΫϥε *OU 'MPBU 3BUJPOBM %PVCMF /VN 'MPBUJOH 'SBDUJPOBM ͋·Γ͍͍ྫ͡Όͳ͍͚Ͳ

Slide 5

Slide 5 text

ܕΫϥεͷఆٛ class Eq a => Ord a where compare :: a -> a -> Ordering (<=) :: a -> a -> Bool (<) :: a -> a -> Bool ... ʮܕΫϥε͸0SEͱ͍͏໊લͰ͢ʯ ʮBͱ͍͏ܕ ม਺ ʹ͍ͭͯҎԼͷ ؔ਺Λ࣮૷͍ͯͩ͘͠͞ʯ ʮB͕&RͰ͋Δ͜ͱ Λཁٻ͠·͢ʯ ʮ͜ΕΒͷܕΛ࣋ͭؔ਺ ϝιου Λ࣮૷͍ͯͩ͘͠͞ʯ NJOJNBMDPNQMFUFEFpOJUJPO͕͋Δ৔߹͸ͦΕ͚࣮ͩ૷͢Ε͹͍͍

Slide 6

Slide 6 text

Πϯελϯεએݴ instance Ord Bool where True <= False = False _ <= _ = True ʮ#PPMܕΛ0SEͷΠϯελϯεʹ͠·͢ʯ ʮ ͱ͍͏ؔ਺ͷ࣮૷Ͱ͢ʯ ʮ0SEͷ.JOJNBMDPNQMFUFEFpOJUJPO͸ DPNQBSF·ͨ͸ ͳͷͰ͜ΕͰऴΘΓͰ͢ʯ

Slide 7

Slide 7 text

ܕΫϥεΛ࢖ͬͨؔ਺ sort :: Ord a => [a] -> [a] sort = ... ʮ0SEͷੑ࣭Λ࢖͏ͷͰɺܕม਺B͸ 0SEͷΠϯελϯεͰͳ͚Ε͹͍͚·ͤΜɻ Ͱ΋0SEͰ͋Ε͹ͲΜͳܕͰ΋େৎ෉ʯ

Slide 8

Slide 8 text

ܕΫϥεͷخ͠͞ ࣗ෼Ͱ࡞ͬͨܕΛͳʹ͔ͷܕΫϥεͷΠϯελϯεʹ͢Δ
 ˠͦͷܕΫϥεʹ͍ͭͯఆٛͯ͋͠Δؔ਺͕λμͰ࢖͑ ΔΑ͏ʹͳΔ ྫࣗ࡞ͷܕΛ.POBEͷΠϯελϯεʹ͢Δ Λ࣮૷͢Δ ͱɺ$POUSPM.POBEϞδϡʔϧʹఆٛ͞ Ε͍ͯΔؔ਺͚ͩͰ΋ݸͷؔ਺͕࢖͑ΔΑ͏ʹͳΔ Կ͔ͷܕΫϥεʹ͍ͭͯͷؔ਺Λ࡞Δ
 ˠͦͷܕΫϥεͷΠϯελϯεʹͳ͍ͬͯΔ͢΂ͯͷܕ Ͱͦͷؔ਺͕࢖͑ΔΑ͏ʹͳΔ CBTF

Slide 9

Slide 9 text

5ZQFDMBTTPQFEJBͱ͸ )BTLFMMͷجຊతͳܕΫϥεͷղઆهࣄ )BTLFMMͰ͸͍Ζ͍ΖͳܕͱܕΫϥεʹ׳ΕΔ ͜ͱ͕ͱͯ΋ॏཁ IUUQTXJLJIBTLFMMPSH5ZQFDMBTTPQFEJB ܕΫϥεͷґଘؔ܎

Slide 10

Slide 10 text

঺հ͞Ε͍ͯΔܕΫϥε 'VODUPS "QQMJDBUJWF .POBE .POBE5SBOT .POBE'JY 4FNJHSPVQ .POPJE 'PMEBCMF 5SBWFSTBCMF $BUFHPSZ "SSPX $PNPOBE Ұ֮ͭ͑Δ͝ͱʹͰ͖Δ͜ͱ͕޿͕Δ 'VODUPS "QQMJDBUJWF .POBE .POBE5SBOT͘ Β͍·Ͱ΍Δͱ͍ͩͿ͍Ζ͍ΖͰ͖ΔΑ͏ʹͳΔ lThere is no royal road to Haskell.zͱ͍͏ϢʔΫ Ϧουͷ༗໊ͳݴ༿͕͋Δͬͯ5ZQFDMBTTPQFEJBʹॻ͍ͯΔ ࣌఺

Slide 11

Slide 11 text

ཧղͷͨΊͷ৺ߏ͑ ˞͜ΕΒ͸ݸਓతͳҙݟͰ͢ આ໌ΛಡΜͰ͏Μ͏ΜᄬΔΑΓͱΓ͍͋͑ͣΖ͍ΖͳΠϯε λϯεΛ࢖ͬͯΈͯ׳ΕΔͷ͕Ұ൪͍͍ͱࢥ͏ .POBEͳͲͷΠϝʔδΛߟ͑͸͡ΊΔͱυπϘʹ͸·ΔՄ ೳੑ͕͋ΔͷͰɺܕͱίʔυ͚ͩΈͯߟ͑Δ ܕΫϥεͷϝιου͚ͩݟΔΑΓݸʑͷΠϯελϯεͷఆٛ ΛΈͯߟ͑Δ 'VODUPS΋.POBE΋ͨͩͷܕΫϥεɻগ͠ܕ͕ෳࡶͳͩ ͚Ͱ&R΍0SEͱಉ͡ ࢖͏͚ͩͳΒ୅਺΍ݍ࿦͸஌Βͳͯ͘΋େৎ෉

Slide 12

Slide 12 text

༨ஊ ࣋ͭ΂͖ੑ࣭Λຬͨ͞ͳ͍Α͏ͳΠϯελϯε΋࡞ΕΔ ੑ࣭Λຬ͍ͨͯ͠Δ͜ͱΛલఏͱ͢Δؔ਺͕յΕΔ ͦ͠ ͯؾ͖ͮʹ͍͘ ϞφυଇΛຬ͍ͨͯ͠ͳ͍Ϟφυͱ͔؆୯ʹ࡞ΕΔ ੑ࣭Λຬ͍ͨͯ͠ͳ͍ͱΠϯελϯεΛ࡞Εͳ͍Α͏ʹͨ͠ ͍ ˠ$PRͱ͔*ESJTͱ͔࢖͑͹Ͱ͖·͢ ϝιουͷܕͷͱ͜Ζʹ໋୊Λॻ͘ )BTLFMMͰ΋Ͱ͖Δʁ ࠷ۙͷ()$ͷܕϨϕϧࣄ৘Λ͋ ·Γ஌Βͳ͍

Slide 13

Slide 13 text

·ͱΊ ܕΫϥεͱ͍͏ػೳʹ͍ͭͯ؆୯ʹઆ໌͠·͠ ͨ 5ZQFDMBTTPQFEJBͱ͍͏ओཁͳܕΫϥεͷղઆ هࣄΛ঺հ͠·ͨ͠ ͱΓ͋͑ͣ࢖ͬͯΈͯ׳ΕΔͷ͕͍͍ͱࢥ͍· ͢