----------------------------------------------------------------------------- -- | -- Module : Data.Array.Parallel.Unlifted.Sequential.Flat.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.Parallel.Unlifted.Sequential.Flat.Enum ( enumFromToU, enumFromThenToU, enumFromStepLenU, enumFromToEachU ) where import Data.Array.Parallel.Base ( (:*:)) import Data.Array.Parallel.Stream ( enumFromToS, enumFromThenToS, enumFromStepLenS, enumFromToEachS) import Data.Array.Parallel.Unlifted.Sequential.Flat.UArr ( UA, UArr) import Data.Array.Parallel.Unlifted.Sequential.Flat.Stream ( unstreamU, streamU) import Data.Array.Parallel.Unlifted.Sequential.Flat.Sums ( sumU) -- |Yield an enumerated array -- -- FIXME: See comments about enumFromThenToS enumFromToU :: Int -> Int -> UArr Int {-# INLINE_U enumFromToU #-} enumFromToU start end = unstreamU (enumFromToS 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