On 08/03/2010, at 12:17, Alexander Solla wrote: >> GHC even optimizes it to: >> >> fib = fib > > Sounds like an implementation bug, not an infinite dimensional vector space > bug. My guess is that strictness is getting in the way, and forcing what > would be a lazy call to fib in the corresponding list code -- fib = 0 : 1 : > (zipWith (+) fib (tail fib)) -- into a strict one. > > In fact, I'm pretty sure that's what the problem is: > > data Vector a = Vector {-# UNPACK #-} !Int > {-# UNPACK #-} !Int > {-# UNPACK #-} !(Array a)
The problem is that you have to allocate an Array of a specific length when creating a Vector. Arrays are finite by definition. It's not a bug, it's a feature. Note that in the context of package vector, "vector" means a 1-dimensional, 0-indexed array. This is not unusual - see, for instance, the standard C++ library. Roman _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe