Ticket #1610 (closed proposal: fixed)
Make arrays safer
| Reported by: | igloo | Owned by: | igloo |
|---|---|---|---|
| Priority: | high | Milestone: | 6.8.1 |
| Component: | libraries (other) | Version: | 6.6.1 |
| Keywords: | Cc: | ||
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | Difficulty: | Unknown | |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
This is a proposal to make arrays safer (e.g. see #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.
Attachments
Change History
Note: See
TracTickets for help on using
tickets.

