[GHC] #9220: type roles for unboxed arrays
GHC
ghc-devs at haskell.org
Thu Aug 28 19:45:08 UTC 2014
#9220: type roles for unboxed arrays
-------------------------------------+-------------------------------------
Reporter: rwbarton | Owner: goldfire
Type: bug | Status: new
Priority: normal | Milestone: 7.10.1
Component: libraries | Version: 7.8.1
(other) | Keywords:
Resolution: | Architecture: Unknown/Multiple
Operating System: | Difficulty: Unknown
Unknown/Multiple | Blocked By:
Type of failure: | Related Tickets:
None/Unknown |
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Comment (by rwbarton):
Replying to [comment:6 goldfire]:
> If I understand correctly, then, a representational role will allow
users to get out-of-bounds errors, right? This would happen in the
contrived scenario in comment:3.
You won't actually get an out-of-bounds ''error'', you'll simply read
outside the memory area allocated to the array (which could cause a
segfault, or leak other data, or just return nonsense).
Regarding `UArray` specifically, I believe it's true that all the
different existing instances of `IArray UArray` are for non-
representationally equal types (although under the hood many are actually
represented identically, e.g. `data Word8 = W8# Word#`, `data Word16 =
W16# Word#`; I believe these are still not inter-`coerce`-ible, though).
And in order to write your own `IArray` instance you have to define
functions with names like `unsafeAt`. So a representational role for
`UArray` would be justifiable if ensuring that the in-array representation
is identical is considered to be part of the contract when defining an
`IArray` instance for a newtype. (One that would be satisfied
automatically by GND.)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9220#comment:8>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list