Recall the type (.).
(.) :: (b -> c) -> (a -> b) -> a -> c
Three arguments are required: two functions and an initial value and returns the result of two functions.
, (.).
, :
map (*2) . filter even [1,2,3,4]
:
(.) (map (*2)) (filter even [1,2,3,4])
map (*2) . (b -> c), b c - Num a => [a]. :
Prelude> :t filter even [1,2,3,4]
filter even [1,2,3,4] :: Integral a => [a]
, [a] , (.) .
, :
Couldn't match expected type `a0 -> [b0]' with actual type `[a1]'
In the return type of a call of `filter'
In the second argument of `(.)', namely `filter even [1, 2, 3, 4]'
In the expression: map (* 2) . filter even [1, 2, 3, 4]
... !
$, :
map (*2) . filter even $ [1,2,3,4]
parens,
map (*2) (filter even [1,2,3,4])
:
(map (*2) . filter even) [1,2,3,4]