    -----------------------------------------------------------------------------
    -- |
    -- Module      : Data.Array.Parallel.Unlifted.Sequential.Flat.Search
    -- Copyright   : (c) 2007         Roman Leshchinskiy
    -- License     : see libraries/ndp/LICENSE
    --
    -- Maintainer  : Roman Leshchinskiy <rl@cse.unsw.edu.au>
    -- Stability   : internal
    -- Portability : portable
    --
    -- Description ---------------------------------------------------------------
    --
    --  Searching in flat unlifted arrays.
    --
    -- Todo ----------------------------------------------------------------------
    --

    {-# LANGUAGE CPP #-}

    #include "fusion-phases.h"

    module Data.Array.Parallel.Unlifted.Sequential.Flat.Search (
      findU, findIndexU
    ) where

    import Data.Array.Parallel.Stream (
      findS, findIndexS)
    import Data.Array.Parallel.Unlifted.Sequential.Flat.UArr (
      UA, UArr)
    import Data.Array.Parallel.Unlifted.Sequential.Flat.Stream (
      streamU)

    findU :: UA a => (a -> Bool) -> UArr a -> Maybe a
    {-# INLINE_U findU #-}
    findU p = findS p . streamU

    findIndexU :: UA a => (a -> Bool) -> UArr a -> Maybe Int
    {-# INLINE_U findIndexU #-}
    findIndexU p = findIndexS p . streamU