, , , .
Prelude> :t (fmap . fmap) sum
(fmap . fmap) sum
:: (Functor f, Functor f1, Num b) => f (f1 [b]) -> f (f1 b)
, Just f (f1 [b]), (fmap . fmap) sum Just f (f1 b).
Just :: (Functor f, Functor f1, Num b) => f (f1 [b])
, f f1, RHS. GHCi , (fmap . fmap) sum Just:
Prelude> :t (fmap . fmap) sum Just
(fmap . fmap) sum Just :: Num b => [b] -> Maybe b
:
(Functor f, Functor f1, Num b) => f (f1 b)
, f f1 . , (, -> ):
(fmap . fmap) sum Just :: Num b => [b] -> Maybe b
-- Same as...
(fmap . fmap) sum Just :: Num b => (->) [b] (Maybe b)
-- Or...
(fmap . fmap) sum Just :: Num b => ((->) [b]) (Maybe b)
-- Functor f = ((->) [b])
-- Functor f1 = Maybe
, , , Functor f (->) [b]... , ! Functor f1 - Maybe, .
:
Prelude> :t (fmap . fmap) sum :: Num b => ([b] -> Maybe [b]) -> ([b] -> Maybe b)
(fmap . fmap) sum :: Num b => ([b] -> Maybe [b]) -> ([b] -> Maybe b)
:: Num b => ([b] -> Maybe [b]) -> [b] -> Maybe b
GHCi , .
, , , (->) [b] !