uvector-0.1: Data/Array/Vector/Strict/Enum.hs
{-# LANGUAGE TypeOperators #-}
-----------------------------------------------------------------------------
-- |
-- Module : Data.Array.Vector.Strict.Enum
-- Copyright : (c) [2001..2002] Manuel M T Chakravarty & Gabriele Keller
-- (c) 2006 Manuel M T Chakravarty & Roman Leshchinskiy
-- License : see libraries/ndp/LICENSE
--
-- Maintainer : Roman Leshchinskiy <rl@cse.unsw.edu.au>
-- Stability : internal
-- Portability : portable
--
-- Description ---------------------------------------------------------------
--
-- Enum-related operations on flat unlifted arrays.
--
-- Todo ----------------------------------------------------------------------
--
{-# LANGUAGE CPP #-}
#include "fusion-phases.h"
module Data.Array.Vector.Strict.Enum (
enumFromToU, enumFromToFracU,
enumFromThenToU, enumFromStepLenU, enumFromToEachU
) where
import Data.Array.Vector.Stream
import Data.Array.Vector.UArr
import Data.Array.Vector.Prim.Hyperstrict
import Data.Array.Vector.Strict.Stream
-- |Yield an enumerated array
--
-- FIXME: See comments about enumFromThenToS
enumFromToU :: (UA a, Integral a) => a -> a -> UArr a
{-# INLINE_U enumFromToU #-}
enumFromToU start end = unstreamU (enumFromToS start end)
enumFromToFracU :: (UA a, RealFrac a) => a -> a -> UArr a
{-# INLINE_U enumFromToFracU #-}
enumFromToFracU start end = unstreamU (enumFromToFracS start end)
-- |Yield an enumerated array using a specific step
--
-- FIXME: See comments about enumFromThenToS
enumFromThenToU :: Int -> Int -> Int -> UArr Int
{-# INLINE_U enumFromThenToU #-}
enumFromThenToU start next end = unstreamU (enumFromThenToS start next end)
enumFromStepLenU :: Int -> Int -> Int -> UArr Int
{-# INLINE_U enumFromStepLenU #-}
enumFromStepLenU s d n = unstreamU (enumFromStepLenS s d n)
enumFromToEachU :: Int -> UArr (Int :*: Int) -> UArr Int
{-# INLINE_U enumFromToEachU #-}
enumFromToEachU n = unstreamU . enumFromToEachS n . streamU