I wonder whether someone's invented a way to take a nice ADT like
data List a = Cons a (List a) | Nil
and automatically unroll it to fill at least a cache line. That sounds like it'd be a small win for performance, but I don't know.