Ignore-this: 4a655a3a1d2348054d2028f5c26dc0d5 darcs-hash:20140525015603-7469c-30d96daeffde6da775c2b8f6579c0a2fbbfc479a
16 lines
417 B
Haskell
16 lines
417 B
Haskell
{-# LANGUAGE MagicHash,BangPatterns #-}
|
|
module Data.Array.Static where
|
|
|
|
import Data.Static
|
|
import GHC.Exts
|
|
import Data.Ix
|
|
|
|
data StaticArray i e = StaticArray i i Addr#
|
|
|
|
bounds :: Ix i => StaticArray i e -> (i,i)
|
|
bounds (StaticArray s e _) = (s,e)
|
|
|
|
(!) :: (StaticElement e,Ix i) => StaticArray i e -> i -> e
|
|
(!) (StaticArray s e addr) i = let !(I# ri) = index (s,e) i
|
|
in extract addr ri
|