੩తܕ͚ && ܕਪ
Prelude> let a = 5 + 4
Prelude> :t a
a :: Num a => a
Prelude> let b :: Num a => a; b = (5 :: Num a
=> a) + (4 :: Num a => a)
Prelude> :t b
b :: Num a => a
Slide 22
Slide 22 text
• ܕͷ࣋ͭੑ࣭Λද͢ΠϯλʔϑΣʔεͬΆ͍
• Numʹଐ͢ܕ””ͱͯ͠ͷੑ࣭Λ࣋ͭ
ܕΫϥε
Prelude> :t 10
10 :: Num a => a
Prelude> :t 10 :: Int
10 :: Int :: Int
Prelude> :t 10 :: Double
10 :: Double :: Double
Slide 23
Slide 23 text
Ϟφυ
Slide 24
Slide 24 text
Ϟφυͷલʹཧղ͍ͨͭ͠
• ϑΝϯΫλʔ
• ΞϓϦΧςΟϒϑΝϯΫλʔ
class Functor f where
fmap :: (a -> b) -> f a -> f b
class (Functor f) => Applicative f where
pure :: a -> f a
(<*>) :: f (a -> b) -> f a -> f b
class Monad m where
return :: Monad m => a -> m a
(>>=) :: Monad m => m a -> (a -> m b) -> m b
…
B
monad
C
monad
Just 10 >>= (\x -> Just(show x)) = Just “10”
B
monad
SFUVSOB
return 10 :: Maybe Int = Just 10
C
monad
B
Slide 28
Slide 28 text
• จ຺Λ࣋ͭಉ࢜ͷܭࢉΛ៉ྷʹΔͨΊͷΈ
• ϞφυͱɺϞφυΛฦΓͱ͢ΔؔΛ
͍͍ײ͡ʹΈ߹ΘͤͯϞφυΛಘΔ
• ܭࢉ݁ՌΛϞφυʹ͢Δ
• Just 10 ͱ show ΛͬͯJust “10”
• ࣦഊͯͨ͠ΒશମΛࣦഊͤ͞Δ
• Nothing Λ show ͠Α͏ͱ͢Δͱ Nothing
Ϟφυ