
Hi all, Proposal: http://hackage.haskell.org/trac/ghc/ticket/1610 This is a proposal to make arrays safer, e.g. see: http://hackage.haskell.org/trac/ghc/ticket/1046 This is a divergence from Haskell 98. The patches: * Add (numElements :: Ix i => a i e -> Int) to IArray class * Array types get an extra field for numElements, e.g. -data UArray i e = UArray !i !i ByteArray# +data UArray i e = UArray !i !i !Int ByteArray# This is a cache of rangeSize(l,u) * Add safeRangeSize (always returns >= 0) * Add safeIndex (use unsafeIndex (no Ix inRange check), but check index < numElements) * unsafeForeignPtrToStorableArray gained an (Ix i) context * Use the new functions in various places Suggested deadline: 24 Aug 2007. Thanks Ian

Ian Lynagh wrote:
* Add (numElements :: Ix i => a i e -> Int) to IArray class * Array types get an extra field for numElements, e.g.
-data UArray i e = UArray !i !i ByteArray# +data UArray i e = UArray !i !i !Int ByteArray#
but check index < numElements)
Also index >= 0, unless it is an unsigned/Word type, in which case that will be implicitly checked? Isaac

On Fri, Aug 10, 2007 at 12:37:00PM -0300, Isaac Dupree wrote:
Ian Lynagh wrote:
* Add (numElements :: Ix i => a i e -> Int) to IArray class * Array types get an extra field for numElements, e.g.
-data UArray i e = UArray !i !i ByteArray# +data UArray i e = UArray !i !i !Int ByteArray#
but check index < numElements)
Also index >= 0
Good point, thanks. Fixed locally. Ian
participants (2)
-
Ian Lynagh
-
Isaac Dupree