[Haskell-cafe] Array copying
Jules Bean
jules at jellybean.co.uk
Tue Dec 4 09:32:09 EST 2007
Andrew Coppin wrote:
> Andrew Coppin wrote:
>> copy :: Word32 -> IOUArray Word32 Bool -> Word32 -> IO (IOUArray
>> Word32 Bool)
>> copy p grid size = do
>> let size' = size * p
>> grid' <- newArray (1,size') False
>>
>> mapM_
>> (\n -> do
>> b <- readArray grid n
>> if b
>> then mapM_ (\x -> writeArray grid' (n + size*x) True) [0..p-1]
>> else return ()
>> )
>> [1..size]
>>
>> return grid'
>
> Actually, thinking about this... for most kinds of arrays (whether boxed
> or unboxed, mutable or immutable) there's probably a more efficient way
> to copy the data then this. Maybe we should add something to the various
> array APIs to allow efficient copying of arrays / large chunks of arrays?
Ideally we'd have the compiler generate optimal code anyway, then you
wouldn't need such things.
So, let's hope those compiler/optimiser guys keep working hard!
Jules
More information about the Haskell-Cafe
mailing list