Remove HACKS and update comments to with trac links
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 22 Apr 2010 16:58:37 +0000 (16:58 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 22 Apr 2010 16:58:37 +0000 (16:58 +0000)
Data/Vector.hs
Data/Vector/Primitive.hs
Data/Vector/Storable.hs
Data/Vector/Unboxed.hs
HACKS [deleted file]

index 839ae18..9eaad41 100644 (file)
@@ -184,7 +184,7 @@ instance G.Vector Vector a where
   {-# INLINE basicUnsafeIndexM #-}
   basicUnsafeIndexM (Vector i _ arr) j = indexArrayM arr (i+j)
 
--- See [HACKS:Eq and Ord instances]
+-- See http://trac.haskell.org/vector/ticket/12
 instance Eq a => Eq (Vector a) where
   {-# INLINE (==) #-}
   xs == ys = Stream.eq (G.stream xs) (G.stream ys)
@@ -192,7 +192,7 @@ instance Eq a => Eq (Vector a) where
   {-# INLINE (/=) #-}
   xs /= ys = not (Stream.eq (G.stream xs) (G.stream ys))
 
--- See [HACKS:Eq and Ord instances]
+-- See http://trac.haskell.org/vector/ticket/12
 instance Ord a => Ord (Vector a) where
   {-# INLINE compare #-}
   compare xs ys = Stream.cmp (G.stream xs) (G.stream ys)
index 3b4cf9c..2fa5481 100644 (file)
@@ -156,7 +156,7 @@ instance Prim a => G.Vector Vector a where
   {-# INLINE elemseq #-}
   elemseq _ = seq
 
--- See [HACKS:Eq and Ord instances]
+-- See http://trac.haskell.org/vector/ticket/12
 instance (Prim a, Eq a) => Eq (Vector a) where
   {-# INLINE (==) #-}
   xs == ys = Stream.eq (G.stream xs) (G.stream ys)
@@ -164,7 +164,7 @@ instance (Prim a, Eq a) => Eq (Vector a) where
   {-# INLINE (/=) #-}
   xs /= ys = not (Stream.eq (G.stream xs) (G.stream ys))
 
--- See [HACKS:Eq and Ord instances]
+-- See http://trac.haskell.org/vector/ticket/12
 instance (Prim a, Ord a) => Ord (Vector a) where
   {-# INLINE compare #-}
   compare xs ys = Stream.cmp (G.stream xs) (G.stream ys)
index 4b264a7..b383997 100644 (file)
@@ -169,7 +169,7 @@ instance Storable a => G.Vector Vector a where
   {-# INLINE elemseq #-}
   elemseq _ = seq
 
--- See [HACKS:Eq and Ord instances]
+-- See http://trac.haskell.org/vector/ticket/12
 instance (Storable a, Eq a) => Eq (Vector a) where
   {-# INLINE (==) #-}
   xs == ys = Stream.eq (G.stream xs) (G.stream ys)
@@ -177,7 +177,7 @@ instance (Storable a, Eq a) => Eq (Vector a) where
   {-# INLINE (/=) #-}
   xs /= ys = not (Stream.eq (G.stream xs) (G.stream ys))
 
--- See [HACKS:Eq and Ord instances]
+-- See http://trac.haskell.org/vector/ticket/12
 instance (Storable a, Ord a) => Ord (Vector a) where
   {-# INLINE compare #-}
   compare xs ys = Stream.cmp (G.stream xs) (G.stream ys)
index 9c0c2b5..6fa21a8 100644 (file)
@@ -113,7 +113,7 @@ import qualified Prelude
 
 #include "vector.h"
 
--- See [HACKS:Eq and Ord instances]
+-- See http://trac.haskell.org/vector/ticket/12
 instance (Unbox a, Eq a) => Eq (Vector a) where
   {-# INLINE (==) #-}
   xs == ys = Stream.eq (G.stream xs) (G.stream ys)
@@ -121,7 +121,7 @@ instance (Unbox a, Eq a) => Eq (Vector a) where
   {-# INLINE (/=) #-}
   xs /= ys = not (Stream.eq (G.stream xs) (G.stream ys))
 
--- See [HACKS:Eq and Ord instances]
+-- See http://trac.haskell.org/vector/ticket/12
 instance (Unbox a, Ord a) => Ord (Vector a) where
   {-# INLINE compare #-}
   compare xs ys = Stream.cmp (G.stream xs) (G.stream ys)
diff --git a/HACKS b/HACKS
deleted file mode 100644 (file)
index 0b8dced..0000000
--- a/HACKS
+++ /dev/null
@@ -1,42 +0,0 @@
-[Eq and Ord instances]
-======================
-
-This is what they should look like:
-
-instance (..., Eq a) => Eq (Vector a) where
-  {-# INLINE (==) #-}
-  (==) = Data.Vector.Generic.eq
-
-instance (..., Ord a) => Ord (Vector a) where
-  {-# INLINE compare #-}
-  compare = Data.Vector.Generic.cmp
-
-This works fine with 6.13 but result in atrocious code with 6.12 which
-essentially ignores the INLINE pragma. The workaround is this:
-
-instance (..., Eq a) => Eq (Vector a) where
-  {-# INLINE (==) #-}
-  xs == ys = Stream.eq (G.stream xs) (G.stream ys)
-
-  {-# INLINE (/=) #-}
-  xs /= ys = not (Stream.eq (G.stream xs) (G.stream ys))
-
-instance (..., Ord a) => Ord (Vector a) where
-  {-# INLINE compare #-}
-  compare xs ys = Stream.cmp (G.stream xs) (G.stream ys)
-
-  {-# INLINE (<) #-}
-  xs < ys = Stream.cmp (G.stream xs) (G.stream ys) == LT
-
-  {-# INLINE (<=) #-}
-  xs <= ys = Stream.cmp (G.stream xs) (G.stream ys) /= GT
-
-  {-# INLINE (>) #-}
-  xs > ys = Stream.cmp (G.stream xs) (G.stream ys) == GT
-
-  {-# INLINE (>=) #-}
-  xs >= ys = Stream.cmp (G.stream xs) (G.stream ys) /= LT
-
-Ugly, but it works. This also requires the package (but not necessarily the
-clients!) to be compiled with -fno-method-sharing.
-