From 388384b67e84b70862eb83ecc86ff5efd1d80817 Mon Sep 17 00:00:00 2001
From: Simon Marlow <simonmar@microsoft.com>
Date: Tue, 23 Oct 2007 13:24:47 +0000
Subject: [PATCH] FIX #1270: add Eq instances for STUArray and IOUArray

---
 Data/Array/Base.hs         | 4 ++++
 Data/Array/IO/Internals.hs | 3 +++
 2 files changed, 7 insertions(+)

diff --git a/Data/Array/Base.hs b/Data/Array/Base.hs
index 6aa1a4f5..b3916a4f 100644
--- a/Data/Array/Base.hs
+++ b/Data/Array/Base.hs
@@ -1115,6 +1115,10 @@ data STUArray s i a = STUArray !i !i !Int !(MutableByteArray s)
 
 INSTANCE_TYPEABLE3(STUArray,stUArrayTc,"STUArray")
 
+instance Eq (STUArray s i e) where
+    STUArray _ _ _ arr1# == STUArray _ _ _ arr2# =
+        sameMutableByteArray# arr1# arr2#
+
 #ifdef __GLASGOW_HASKELL__
 {-# INLINE unsafeNewArraySTUArray_ #-}
 unsafeNewArraySTUArray_ :: Ix i
diff --git a/Data/Array/IO/Internals.hs b/Data/Array/IO/Internals.hs
index 0b79b076..1827ea74 100644
--- a/Data/Array/IO/Internals.hs
+++ b/Data/Array/IO/Internals.hs
@@ -77,6 +77,9 @@ newtype IOUArray i e = IOUArray (STUArray RealWorld i e)
 
 INSTANCE_TYPEABLE2(IOUArray,iOUArrayTc,"IOUArray")
 
+instance Eq (IOUArray i e) where
+    IOUArray s1 == IOUArray s2  =  s1 == s2
+
 instance MArray IOUArray Bool IO where
     {-# INLINE getBounds #-}
     getBounds (IOUArray arr) = stToIO $ getBounds arr
-- 
GitLab