Make Unboxed vectors of tuples strict in their components
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Mon, 7 Dec 2009 04:37:06 +0000 (04:37 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Mon, 7 Dec 2009 04:37:06 +0000 (04:37 +0000)
internal/GenUnboxTuple.hs
internal/unbox-tuple-instances

index fe447c2..11b145a 100644 (file)
@@ -44,7 +44,7 @@ generate n =
       = hang (hsep [text "data instance", text ty, tuple vars])
              4
              (hsep [char '=', con c, text "{-# UNPACK #-} !Int"
-                   , vcat $ map (\v -> parens (text ty <+> v)) vars])
+                   , vcat $ map (\v -> char '!' <> parens (text ty <+> v)) vars])
 
     class_instance cls
       = text "instance" <+> vtuple [text "Unbox" <+> v | v <- vars]
index 71a9328..5921e74 100644 (file)
@@ -1,10 +1,10 @@
 #ifdef DEFINE_INSTANCES
 data instance MVector s (a, b)
-    = MV_2 {-# UNPACK #-} !Int (MVector s a)
-                               (MVector s b)
+    = MV_2 {-# UNPACK #-} !Int !(MVector s a)
+                               !(MVector s b)
 data instance Vector (a, b)
-    = V_2 {-# UNPACK #-} !Int (Vector a)
-                              (Vector b)
+    = V_2 {-# UNPACK #-} !Int !(Vector a)
+                              !(Vector b)
 instance (Unbox a, Unbox b) => Unbox (a, b)
 instance (Unbox a, Unbox b) => M.MVector MVector (a, b) where
   {-# INLINE basicLength  #-}
@@ -108,13 +108,13 @@ unzip (V_2 n_ as bs) = (as, bs)
 #endif
 #ifdef DEFINE_INSTANCES
 data instance MVector s (a, b, c)
-    = MV_3 {-# UNPACK #-} !Int (MVector s a)
-                               (MVector s b)
-                               (MVector s c)
+    = MV_3 {-# UNPACK #-} !Int !(MVector s a)
+                               !(MVector s b)
+                               !(MVector s c)
 data instance Vector (a, b, c)
-    = V_3 {-# UNPACK #-} !Int (Vector a)
-                              (Vector b)
-                              (Vector c)
+    = V_3 {-# UNPACK #-} !Int !(Vector a)
+                              !(Vector b)
+                              !(Vector c)
 instance (Unbox a, Unbox b, Unbox c) => Unbox (a, b, c)
 instance (Unbox a,
           Unbox b,
@@ -247,15 +247,15 @@ unzip3 (V_3 n_ as bs cs) = (as, bs, cs)
 #endif
 #ifdef DEFINE_INSTANCES
 data instance MVector s (a, b, c, d)
-    = MV_4 {-# UNPACK #-} !Int (MVector s a)
-                               (MVector s b)
-                               (MVector s c)
-                               (MVector s d)
+    = MV_4 {-# UNPACK #-} !Int !(MVector s a)
+                               !(MVector s b)
+                               !(MVector s c)
+                               !(MVector s d)
 data instance Vector (a, b, c, d)
-    = V_4 {-# UNPACK #-} !Int (Vector a)
-                              (Vector b)
-                              (Vector c)
-                              (Vector d)
+    = V_4 {-# UNPACK #-} !Int !(Vector a)
+                              !(Vector b)
+                              !(Vector c)
+                              !(Vector d)
 instance (Unbox a, Unbox b, Unbox c, Unbox d) => Unbox (a, b, c, d)
 instance (Unbox a,
           Unbox b,
@@ -419,17 +419,17 @@ unzip4 (V_4 n_ as bs cs ds) = (as, bs, cs, ds)
 #endif
 #ifdef DEFINE_INSTANCES
 data instance MVector s (a, b, c, d, e)
-    = MV_5 {-# UNPACK #-} !Int (MVector s a)
-                               (MVector s b)
-                               (MVector s c)
-                               (MVector s d)
-                               (MVector s e)
+    = MV_5 {-# UNPACK #-} !Int !(MVector s a)
+                               !(MVector s b)
+                               !(MVector s c)
+                               !(MVector s d)
+                               !(MVector s e)
 data instance Vector (a, b, c, d, e)
-    = V_5 {-# UNPACK #-} !Int (Vector a)
-                              (Vector b)
-                              (Vector c)
-                              (Vector d)
-                              (Vector e)
+    = V_5 {-# UNPACK #-} !Int !(Vector a)
+                              !(Vector b)
+                              !(Vector c)
+                              !(Vector d)
+                              !(Vector e)
 instance (Unbox a,
           Unbox b,
           Unbox c,
@@ -646,19 +646,19 @@ unzip5 (V_5 n_ as bs cs ds es) = (as, bs, cs, ds, es)
 #endif
 #ifdef DEFINE_INSTANCES
 data instance MVector s (a, b, c, d, e, f)
-    = MV_6 {-# UNPACK #-} !Int (MVector s a)
-                               (MVector s b)
-                               (MVector s c)
-                               (MVector s d)
-                               (MVector s e)
-                               (MVector s f)
+    = MV_6 {-# UNPACK #-} !Int !(MVector s a)
+                               !(MVector s b)
+                               !(MVector s c)
+                               !(MVector s d)
+                               !(MVector s e)
+                               !(MVector s f)
 data instance Vector (a, b, c, d, e, f)
-    = V_6 {-# UNPACK #-} !Int (Vector a)
-                              (Vector b)
-                              (Vector c)
-                              (Vector d)
-                              (Vector e)
-                              (Vector f)
+    = V_6 {-# UNPACK #-} !Int !(Vector a)
+                              !(Vector b)
+                              !(Vector c)
+                              !(Vector d)
+                              !(Vector e)
+                              !(Vector f)
 instance (Unbox a,
           Unbox b,
           Unbox c,