Just 1 (Just 1), . , :
(fmap . fmap) (+1) Just 1
-> (\x -> fmap (fmap x)) (+1) Just 1
-> ((fmap (fmap (+1)) Just) 1
, :
fmap1 :: Functor f => (a -> b) -> f a -> f b
fmap2 :: Functor g => (c -> d) -> g c -> g d
(+1) :: Num h => h -> h
Just :: i -> Maybe i
1 :: Num j => j
fmapi - i- fmap ( ). , , , , fmap (+1), , c ~ d ~ h:
fmap1 :: Functor f => (a -> b) -> f a -> f b
fmap2 :: Functor g => (h -> h) -> g h -> g h
(+1) :: Num h => h -> h
Just :: i -> Maybe i
1 :: Num j => j
, fmap (fmap1) fmap (+1) :: Functor g => g h -> g h , Just :: i -> Maybe i - . , , : (a -> b) ~ g h -> g h, a ~ b ~ g h, , f (g h) ~ i -> Maybe i, , f (g h) ~ (->) i (Maybe i) so f ~ (->) i g ~ Maybe, h ~ i, i ~ j > :
fmap1 :: (Maybe i -> Maybe i) -> (->) i (Maybe i) -> (->) i Maybe i
fmap2 :: (i -> i) -> Maybe i -> Maybe i
(+1) :: Num h => i -> i
Just :: i -> Maybe i
1 :: Num i => i
, (->) r , , base-4.10.1.0 :
instance Functor ((->) r) where
fmap = (.)
, fmap, " " . , Just fmap (+1). , fmap (.), - fmap Maybe, :
((fmap (fmap (+1)) Just) 1
-> (((.) (fmap (+1)) Just) 1
-> ((\x -> (fmap (+1) (Just x)) 1
-> fmap (+1) (Just 1)
-> Just 2
, (fmap (+1)) - Just 1.