The docs say: [(i, e)] a list of associations of the form (index, value). Typically, this list will be expressed as a comprehension. An association '(i, x)' defines the value of the array at index i to be x. I think the important part is that the array is used as a lookup for the values to associate with the array. The lookup returns a ?random? one of the three values in the list of tuples that have 1 as the first index. In this case it happens to be 3. And so on. This may help: Prelude Array> let e = [1,2,3] Prelude Array> array (1,3) [(i,v) | i<-[1..3], v<-e] array (1,3) [(1,3),(2,3),(3,3)] Prelude Array> array (1,9) [(i,v) | i<-[1..3], v<-e] array (1,9) [(1,3),(2,3),(3,3),(4,*** Exception: (Array.!): undefined array element Prelude Array> It couldn't look up a value for 4 so it failed... Does that help? --Tim ----- Original Message ---- From: cchang <djvsrose@gmail.com> To: beginners@haskell.org Sent: Sat, January 15, 2011 6:19:05 AM Subject: [Haskell-beginners] question about comprehension or array creation Hi, I tried to create an array like the following. "array (1,3) [(1,1), (2,2), (3,3)]" through code in .hs e = [1,2,3] array (1,3) [(i,v) | i<-[1..3], v<-e] but I got "array (1,3) [(1,3), (2,3), (3,3)]" why v is always 3 in this case? Can anyone shed some light on this? Thanks, _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners