packages feed

NoSlow-0.2: NoSlow/Backend/Vector/Unboxed.hs

{-# LANGUAGE TypeFamilies, CPP #-}
module NoSlow.Backend.Vector.Unboxed (
  module Data.Vector.Unboxed,

  enumFromTo_Int, index, append,
  pair, from2, fst, snd, triple, from3
) where

import NoSlow.Util.Computation
import qualified Data.Vector.Unboxed as V
import Data.Vector.Unboxed

import Prelude

instance DeepSeq (V.Vector a)

instance (TestData a, V.Unbox a) => TestData (V.Vector a) where
  testData = testList

instance V.Unbox a => ListLike V.Vector a where
  fromList = V.fromList

enumFromTo_Int :: Int -> Int -> V.Vector Int
{-# INLINE enumFromTo_Int #-}
enumFromTo_Int = V.enumFromTo

index :: V.Unbox a => V.Vector a -> Int -> a
{-# INLINE index #-}
index = (V.!)

append :: V.Unbox a => V.Vector a -> V.Vector a -> V.Vector a
{-# INLINE append #-}
append = (V.++)

pair :: a -> b -> (a,b)
{-# INLINE pair #-}
pair = (,)

from2 :: (a,b) -> (a,b)
{-# INLINE from2 #-}
from2 = id

triple :: a -> b -> c -> (a,b,c)
{-# INLINE triple #-}
triple = (,,)

from3 :: (a,b,c) -> (a,b,c)
{-# INLINE from3 #-}
from3 = id