Skip to content
  • Simon Marlow's avatar
    Change the API of MArray to allow resizable arrays · 784a581b
    Simon Marlow authored
    See #704
    
    The MArray class doesn't currently allow a mutable array to change its
    size, because of the pure function 
    
      bounds :: (HasBounds a, Ix i) => a i e -> (i,i)
    
    This patch removes the HasBounds class, and adds
    
      getBounds :: (MArray a e m, Ix i) => a i e -> m (i,i)
    
    to the MArray class, and
    
      bounds :: (IArray a e, Ix i) => a i e -> (i,i)
    
    to the IArray class.
    
    The reason that bounds had to be incorporated into the IArray class is
    because I couldn't make DiffArray work without doing this.  DiffArray
    acts as a layer converting an MArray into an IArray, and there was no
    way (that I could find) to define an instance of HasBounds for
    DiffArray.
    784a581b