[Haskell-cafe] Unboxed arrays

Henning Thielemann lemming at henning-thielemann.de
Wed Mar 26 09:22:20 EDT 2008


On Wed, 26 Mar 2008, Roman Cheplyaka wrote:

> * Andrew Coppin <andrewcoppin at btinternet.com> [2008-03-26 12:37:53+0000]
>> Somebody asked me, so now I'm asking you...
>>
>> In Haskell, you can make "unboxed" arrays of certain value types. These
>> are typically more efficient in space, and probably time too, and also
>> make the array strict in its values. However, you can only do this magic
>> trick for certain types - not for *all* types.
>>
>> Why is that? Is it because nobody has done anything about it yet? Is it
>> because it's thought to be "not necessary" in some way? Is there some
>> theoretical problem? Has somebody got a better idea?
>>
>> I did think it was along the lines of "oh, well, if you want to unbox a
>> type of your own, you just need to write your own instance". The thing
>> that makes me suspicious of this logic is the absense of an instance for
>> tuples. Surely this would be trivial to write, and yet it's not present.
>> If we had instances for a couple of sizes of tuples, it would surely be
>> quite easy to write your own custom instances that just sit on top of
>> this and tuple/untuple your custom values...
>>
>> Any insights here?
>
> Could Data Parallel Haskell[1] be useful for you?
> It was designed for parallel computation, but it includes unboxed
> arrays, nice list-like syntax and array comprehensions.
>
>  1. http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell

A light-weight unboxed array variant is:
   http://code.haskell.org/~sjanssen/storablevector/


I thought it might be more efficient sometimes to split, say Word8 and 
Double data into two arrays, instead of padding data in order to align a 
(Word8,Double) record, but this wouldn't fit into the array data 
structure.


More information about the Haskell-Cafe mailing list