I recommend looking at . and $ to make code more readable (by preventing unnecessary brackets)
product $ map (\x -> x^x) [1..5]
(.) :: (b -> c) -> (a -> b) -> a -> c
($) :: (a -> b) -> a -> b
=> f (g (h x)) == f . g . h $ 5