, , , .
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]
!