From: Simon Marlow Date: Mon, 13 Mar 2006 14:27:01 +0000 (+0000) Subject: Simplify Eq, Ord, and Show instances for UArray X-Git-Tag: directory_2007-05-24~323 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=8626c9df7f0821ced007712c4248b31bac192dab;p=haskell-directory.git Simplify Eq, Ord, and Show instances for UArray The Eq, Ord, and Show instances of UArray were written out longhand with one instance per element type. It is possible to condense these into a single instance for each class, at the expense of using more extensions (non-std context on instance declaration). Suggestion by: Frederik Eaton --- diff --git a/Data/Array/Base.hs b/Data/Array/Base.hs index 745e9ab..ad9db1e 100644 --- a/Data/Array/Base.hs +++ b/Data/Array/Base.hs @@ -809,147 +809,13 @@ instance IArray UArray Word64 where {-# INLINE unsafeAccumArray #-} unsafeAccumArray f init lu ies = runST (unsafeAccumArrayUArray f init lu ies) -instance Ix ix => Eq (UArray ix Bool) where +instance (Ix ix, Eq e, IArray UArray e) => Eq (UArray ix e) where (==) = eqUArray -instance Ix ix => Eq (UArray ix Char) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Int) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Word) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix (Ptr a)) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix (FunPtr a)) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Float) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Double) where - (==) = eqUArray - -#ifdef __GLASGOW_HASKELL__ -instance Ix ix => Eq (UArray ix (StablePtr a)) where - (==) = eqUArray -#endif - -instance Ix ix => Eq (UArray ix Int8) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Int16) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Int32) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Int64) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Word8) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Word16) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Word32) where - (==) = eqUArray - -instance Ix ix => Eq (UArray ix Word64) where - (==) = eqUArray - -instance Ix ix => Ord (UArray ix Bool) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Char) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Int) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Word) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix (Ptr a)) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix (FunPtr a)) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Float) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Double) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Int8) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Int16) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Int32) where +instance (Ix ix, Ord e, IArray UArray e) => Ord (UArray ix e) where compare = cmpUArray -instance Ix ix => Ord (UArray ix Int64) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Word8) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Word16) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Word32) where - compare = cmpUArray - -instance Ix ix => Ord (UArray ix Word64) where - compare = cmpUArray - -instance (Ix ix, Show ix) => Show (UArray ix Bool) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Char) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Int) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Word) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Float) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Double) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Int8) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Int16) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Int32) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Int64) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Word8) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Word16) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Word32) where - showsPrec = showsIArray - -instance (Ix ix, Show ix) => Show (UArray ix Word64) where +instance (Ix ix, Show ix, Show e, IArray UArray e) => Show (UArray ix e) where showsPrec = showsIArray -----------------------------------------------------------------------------