[EMAIL PROTECTED] writes: > Now I'm going to check whether the garbage collector works: both the > Haskell and the C representation won't fit in memory...
If you're using a foreign library to process very large datasets (e.g., image processing, large matrix operations, etc.) it's usual to keep the data on the C side and never transfer the whole dataset into Haskell at the one time. If you want to do this, you'd change an interface like this: type Matrix a = [[a]] -- or any other Haskell representation %dis invert :: Matrix Double -> Matrix Double %dis add :: Matrix Double -> Matrix Double -> Matrix Double ... instance Show a => Show (Matrix a) where ... to one like this: data CMatrix a -- declares a type but no representation type Matrix a = ForeignPtr (CMatrix a) %dis invert :: Matrix Double -> Matrix Double %dis add :: Matrix Double -> Matrix Double -> Matrix Double ... %dis printMatrix :: Matrix Double -> IO () That is, we change the representation to use a ForeignPtr (a pointer into the C heap) and we try to replace functions which access the representation directly with C functions. -- Alastair Reid [EMAIL PROTECTED] http://www.cs.utah.edu/~reid/ _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell