Types:
p_0 :: Show a => (a -> Bool) -> IO [a] -> IO ()
p_1 :: Show a => (a -> Bool) -> IO [a] -> IO ()
p_2 :: (Foldable t, Show a) => (a -> Bool) -> IO (t a) -> IO ()
p_2's other, derived type ignores the predicate:
p_2 :: (Foldable t, Show a) => b -> IO (t a) -> IO ()
š