
I take it that size of the array does not depend on arg ?
Apparently, despite your attempts to force evaluation, the array still contains many unevaluated expressions. Documentation for the vector pacakge reveals that Data.Vector is a *boxed* array, i.e. the entries are only evaluated on demand, so that's where the unevaluated expressions linger around.
Unless you need the extra laziness - which you probably don't, given how you've structured your algorithm - you might want to switch to Data.Vector.Unboxed or Data.Vector.Storable.
Correct. The array size doesn't depend on arg (arg only controls how much of the input list to process. I did not realize that the boxed arrays would have this extra-lazy behavior. The reason I chose boxed is because I needed to store these very large trees (custom data type) that I referenced in an earlier question. Since D.V.Unboxed and Storable don't appear to support non-standard data types, is there another package that might better fit my needs? Data.IntMap perhaps? I originally chose an array over a map because I need fast random access to individual elements (and cheap modification). Thanks again, Travis Erdman