We can do something like
liftRnf f = foldr (\x r -> f x `seq` r) ()
This is useful when the list isn't going to be used again. In practice, this mostly occurs
- in benchmarks
- when the list is constructed solely to force any exception thunks in it.
For fun, here it is point free (I wouldn't use this):
liftRnf f = foldr (seq . f) ()