\begin{code}
-{-# OPTIONS_GHC -XNoImplicitPrelude #-}
+{-# LANGUAGE CPP
+ , NoImplicitPrelude
+ , BangPatterns
+ , MagicHash
+ , UnboxedTuples
+ #-}
{-# OPTIONS_HADDOCK hide #-}
+
-----------------------------------------------------------------------------
-- |
-- Module : GHC.Weak
import GHC.Base
import Data.Maybe
-import GHC.IOBase ( IO(..), unIO )
import Data.Typeable
{-|
let go m = IO $ \s ->
case m of
0# -> (# s, () #)
- _ -> let m' = m -# 1# in
+ _ -> let !m' = m -# 1# in
case indexArray# arr m' of { (# io #) ->
case unIO io s of { (# s', _ #) ->
unIO (go m') s'