{-# LANGUAGE UnicodeSyntax #-} -- | Some functions currently missing from -- "Data.Vector.Fusion.Stream". module Data.Bitstream.Fusion ( genericLength , genericTake , genericDrop , genericIndex , genericReplicate , genericUnfoldrN , genericFindIndex , genericIndexed ) where import qualified Data.Bitstream.Fusion.Monadic as M import Data.Vector.Fusion.Stream import Data.Vector.Fusion.Util import Prelude hiding (replicate) import Prelude.Unicode genericLength ∷ Num n ⇒ Stream α → n {-# INLINE genericLength #-} genericLength = unId ∘ M.genericLength genericTake ∷ Integral n ⇒ n → Stream α → Stream α {-# INLINE genericTake #-} genericTake = M.genericTake genericDrop ∷ Integral n ⇒ n → Stream α → Stream α {-# INLINE genericDrop #-} genericDrop = M.genericDrop genericIndex ∷ (Integral n, Show n) ⇒ Stream α → n → α {-# INLINE genericIndex #-} genericIndex s = unId ∘ M.genericIndex s genericReplicate ∷ Integral n ⇒ n → α → Stream α {-# INLINE genericReplicate #-} genericReplicate = M.genericReplicate genericUnfoldrN ∷ Integral n ⇒ n → (β → Maybe (α, β)) → β → Stream α {-# INLINE genericUnfoldrN #-} genericUnfoldrN = M.genericUnfoldrN genericFindIndex ∷ Integral n ⇒ (α → Bool) → Stream α → Maybe n {-# INLINE genericFindIndex #-} genericFindIndex f = unId ∘ M.genericFindIndex f genericIndexed ∷ Integral n ⇒ Stream α → Stream (n, α) {-# INLINE genericIndexed #-} genericIndexed = M.genericIndexed