Eq instance for Array is surprising
Summary
In general, two Array
s are considered ==
if they have the same
bounds and the same elements in each position. However, if the
arrays are both empty, then they are considered equal even if they
have different bounds. Moreover, this means that bounds
does not
respect ==
.
Steps to reproduce
Data.Array> listArray (1,2) [1,2] == listArray (2,3) [1,2]
False
Data.Array> listArray (1,0) [] == listArray (2,1) []
True
Data.Array> bounds (listArray (1,0) []) == bounds (listArray (2,1) [])
False
Expected behavior
I would expect all of the above to produce False
.
Environment
- GHC version used: 8.10.1
Optional:
- Operating System:
- System Architecture: