Add swap and compose to the Prelude, or Tuple/List
swap :: (a,b) -> (b,a) swap = snd &&& fst
Fairly obvious, but strangely missing.
compose :: [(a -> a)] -> a -> a compose = foldr (.) id composeM :: [(a -> m a)] -> a -> m a composeM = foldr (<=<) return
This can be done with Endo, of course, but the result is awkward. The idiom of composing a list of endomorphisms occurs often enough that you can Google for it.