File: Static.hs

package info (click to toggle)
haskell-encoding 0.10.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,392 kB
  • sloc: haskell: 4,372; ansic: 11; makefile: 4
file content (15 lines) | stat: -rw-r--r-- 417 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{-# 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