What Haskell representation is recommended for 2D, unboxed pixel arrays with millions of pixels?

For multi-dimensional arrays, the current best option in Haskell, in my view, is repa. Repa provides high performance, regular, multi-dimensional, shape polymorphic parallel arrays. All numeric data is stored unboxed. Functions written with the Repa combinators are automatically parallel provided you supply +RTS -Nwhatever on the command line when running the program. Recently, it has … Read more

Memory footprint of Haskell data types

(The following applies to GHC, other compilers may use different storage conventions) Rule of thumb: a constructor costs one word for a header, and one word for each field. Exception: a constructor with no fields (like Nothing or True) takes no space, because GHC creates a single instance of these constructors and shares it amongst … Read more