[make Jhc.Array compile, use unboxed values
John Meacham <john@repetae.net>**20061115044702] hunk ./lib/base/Jhc/Array.hs 1
+{-# OPTIONS_JHC -N #-}
hunk ./lib/base/Jhc/Array.hs 11
+    )
hunk ./lib/base/Jhc/Array.hs 14
+import Jhc.Basics
hunk ./lib/base/Jhc/Array.hs 16
+import Jhc.Int
hunk ./lib/base/Jhc/Array.hs 19
-data Array__ a
+data Array__ :: * -> #
hunk ./lib/base/Jhc/Array.hs 25
-seqAT__ (AT a1) (AT a2) = AT $ \a -> a2 (a1 a)
+seqAT__ (AT a1) (AT a2) = AT $ \a -> case a1 a of
+    a' -> a2 a'
hunk ./lib/base/Jhc/Array.hs 29
-doneAT__ = AT id
+doneAT__ = AT (\arr -> arr)
hunk ./lib/base/Jhc/Array.hs 32
-newAT__ n (AT a1) = a1 (prim_newAT__ (n `dependingOn` a1))
+newAT__ n (AT a1) = case unboxInt (n `dependingOn` a1) of
+    nn -> case prim_newAT__ nn of a' -> a1 a'
hunk ./lib/base/Jhc/Array.hs 36
-writeAT__ i x = AT $ \a -> prim_writeAT__ i x a
+writeAT__ i x = case unboxInt i of i' -> prim_writeAT__ i' x
hunk ./lib/base/Jhc/Array.hs 39
-foreign import primitive prim_newAT__ :: Int -> Array__ a
-foreign import primitive prim_writeAT__ :: Int -> a -> Array__ a -> Array__ a
+foreign import primitive prim_newAT__ :: Int__ -> Array__ a
+foreign import primitive prim_writeAT__ :: Int__ -> a -> AT a
+--foreign import primitive prim_copyAT__ :: Int__ -> Int__ -> Array__ a -> AT a
hunk ./lib/base/Jhc/Array.hs 44
-foreign import primitive unsafeAt__ :: Array__ a -> Int -> a
+foreign import primitive unsafeAt__ :: Array__ a -> Int__ -> a
hunk ./lib/base/Jhc/Array.hs 47
-newArray :: [a] -> Array__ a
-newArray xs = newAT__ (length xs) $ foldr assign doneAT__ (zip [0..] xs) where
-    assign (i,v) rs = writeAT__ i v `seqAT__` rs
hunk ./lib/base/Jhc/Array.hs 48
+--newArray :: [a] -> Array__ a
+--newArray xs = newAT__ (length xs) $ foldr assign doneAT__ (zip [0..] xs) where
+--    assign (i,v) rs = writeAT__ i v `seqAT__` rs
hunk ./lib/base/Jhc/Array.hs 52
+newArray :: Int -> [(Int,a)] -> Array__ a
+newArray n xs = newAT__ n (foldr assign doneAT__ xs) where
+        assign (i,v) rs = writeAT__ i v `seqAT__` rs
+
+
+{-
+newArray :: Int -> [a] -> Array__ a
+newArray n xs = case unboxInt n of
+    un -> newAT__ un $ f zero__ xs where
+        f _ [] = doneAT__
+        f n (x:xs) = case increment__ n of nn -> writeAT__ n x `seqAT__` f nn xs
+-}