ࣹ Haskell ͷؔͱ͢Δ
incr :: Int -> Int
incr x = x + 1
• incr Int ܕͷΛड͚औΓ Int ܕͷΛฦؔ͢
• ͜ΕΛ Int ͔Β Int ͷࣹͱΈͳ͢
• ͜ͷରͱࣹʹΑͬͯݍ͕Ͱ͖Δ : Ҏޙ ͱॻ͘
• ͳ͓ɺ߃ࣹ߃ؔ idɺ߹ؔ߹ (.)
Slide 17
Slide 17 text
ҾΛෳ࣋ͭؔʁ
add :: Int -> Int -> Int
add x y = x + y
• add ೋͭͷ Int ܕͷΛड͚औΓ Int ܕͷΛฦؔ͢
• ɾɾɾͱ͍͏ղऍͷ··ͩͱ ͷࣹͰͳ͍
Slide 18
Slide 18 text
ΧϦʔԽ
add :: Int -> (Int -> Int)
• add Int ܕͷΛड͚औΓ Int -> Int ܕͷΛฦ͢
add 3 :: Int -> Int
(add 3) y = 3 + y -- `add 3` ʮ3 Λؔ͢ʯͰ͋Δ
• Int -> Int ؔͷܕͰ͋Γɺ ͷର
• add ର Int ͔Β Int -> Int ͷ ͷࣹ
Haskell ʹ͓͚Δؔख
class Functor f where
fmap :: (a -> b) -> (f a -> f b)
• Functor ͱ͍͏ܕΫϥε͕͋Δ
• ͜Ε͕࣮ࡍʹݍʹ͓͚Δؔखͷ֓೦ʹ͋ͨΔͷ
• ΑΓ໌ࣔతʹݴ͏ͱɺFunctor ܕΫϥεͷΠϯελϯε͕ؔख
ؔखͷྫ Maybe
fmap :: (a -> b) -> (Maybe a -> Maybe b)
fmap f :: Maybe a -> Maybe b
fmap f (Just x) = Just (f x)
fmap f Nothing = Nothing
• f :: a -> b Λ fmap f :: Maybe a -> Maybe b ʹ
• ͭ·Γɺ ͷࣹΛ ͷࣹʹ͏ͭ͢
• ͕ͨͬͯ͠ɺMaybe ͔Β ͷؔख
Slide 26
Slide 26 text
Functor ͰԿ͕خ͍͠ͷ͔
• Maybe Int ܕͷΛͦͷ··ѻ͓͏ͱ͢Δͱ߹͚͕ඞཁ
• Λ࣋ͭ Just 1 ͳͲͷ߹
• Λ࣋ͨͳ͍ Nothing ͷ߹
• Functor ͷߟ͑Λ͑ɺNothing ͷ͜ͱΕ͍͍ͯ
• Int ʹ͍͚ͭͯͩؔఆٛ͢Ε͍͍