Dear Group, I am trying to create a (relatively) big array, but it seems I cannot make anything larger than 2^30 or so. Here is the code:
import Data.Word import Data.Array.Unboxed import Control.Monad.ST import Data.Array.ST import Control.Exception import Prelude hiding (catch) t1 :: Word64 -> UArray Word64 Bool t1 size = runSTUArray (do a <- newArray (0,size) True :: ST s (STUArray s Word64 Bool) writeArray a 0 False return a) catchArrayException x = do let err = show (x :: SomeException) putStrLn $ "Exception [" ++ err ++ "]" return () main = do let a1 = t1 (2^30) a2 = t1 (2^31) a3 = t1 (2^32) catch (print $ (a1!0,a1!1)) catchArrayException catch (print $ (a2!0,a2!1)) catchArrayException catch (print $ (a3!0,a3!1)) catchArrayException This results in: *Main GOA> main (False,True) (Exception [Negative range size] (False,Exception [Error in array index; 1 not in range [0..1)] It looks like array ranges can only be Ints, and not Int64 or Word64 types. Any pointers would be appreciated. Best wishes, Henry Laxen _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe