
#10142: Documentation for Ix is contradictory around minimal definition -------------------------------------+------------------------------------- Reporter: goldfire | Owner: hvr Type: bug | Status: new Priority: normal | Milestone: Component: Core Libraries | Version: 7.8.4 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Changes (by hvr): * owner: ekmett => hvr Comment: so while `range` and `inRange` have no default implementation, `index` has one that is recursive: {{{#!hs -- Must specify one of index, unsafeIndex -- 'index' is typically over-ridden in instances, with essentially -- the same code, but using indexError instead of hopelessIndexError -- Reason: we have 'Show' at the instances {-# INLINE index #-} -- See Note [Inlining index] index b i | inRange b i = unsafeIndex b i | otherwise = hopelessIndexError unsafeIndex b i = index b i }}} So the minimal pragma should specify that we minimally need {{{ range && inRange && (index || unsafeIndex) }}} I'll make a patch rightaway... -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10142#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler