Data.Vector.Unboxed and Data.Vector.Storable.
Sometimes you have to be clever with memoization on these data structures, because every element in the vector is strict in the whole vector. There are some functions to help with this (like constructN).
--Will