| Copyright | (C) 2008-2015 Edward Kmett (C) 2004 Dave Menendez |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Stability | provisional |
| Portability | portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Data.Stream.Future.Skew
Description
Anticausal streams implemented as non-empty skew binary random access lists
The Applicative zips streams, but since these are potentially infinite this is stricter than would be desired. You almost always want
Synopsis
- data Future a
- (<|) :: a -> Future a -> Future a
- length :: Foldable t => t a -> Int
- tail :: Future a -> Maybe (Future a)
- last :: Future a -> a
- uncons :: Future a -> (a, Maybe (Future a))
- index :: Int -> Future a -> a
- drop :: Int -> Future a -> Maybe (Future a)
- dropWhile :: (a -> Bool) -> Future a -> Maybe (Future a)
- indexed :: Future a -> Future (Int, a)
- from :: Num a => a -> Future a
- break :: (a -> Bool) -> Future a -> ([a], Maybe (Future a))
- span :: (a -> Bool) -> Future a -> ([a], Maybe (Future a))
- split :: (a -> Bool) -> Future a -> ([a], Maybe (Future a))
- splitW :: (Future a -> Bool) -> Future a -> ([a], Maybe (Future a))
- replicate :: Int -> a -> Future a
- insert :: Ord a => a -> Future a -> Future a
- insertBy :: (a -> a -> Ordering) -> a -> Future a -> Future a
- update :: Int -> a -> Future a -> Future a
- adjust :: Int -> (a -> a) -> Future a -> Future a
- toFuture :: [a] -> Maybe (Future a)
- singleton :: a -> Future a
Documentation
Instances
| Foldable Future Source # | |
Defined in Data.Stream.Future.Skew Methods fold :: Monoid m => Future m -> m # foldMap :: Monoid m => (a -> m) -> Future a -> m # foldMap' :: Monoid m => (a -> m) -> Future a -> m # foldr :: (a -> b -> b) -> b -> Future a -> b # foldr' :: (a -> b -> b) -> b -> Future a -> b # foldl :: (b -> a -> b) -> b -> Future a -> b # foldl' :: (b -> a -> b) -> b -> Future a -> b # foldr1 :: (a -> a -> a) -> Future a -> a # foldl1 :: (a -> a -> a) -> Future a -> a # elem :: Eq a => a -> Future a -> Bool # maximum :: Ord a => Future a -> a # minimum :: Ord a => Future a -> a # | |
| Foldable1 Future Source # | |
Defined in Data.Stream.Future.Skew Methods fold1 :: Semigroup m => Future m -> m # foldMap1 :: Semigroup m => (a -> m) -> Future a -> m # foldMap1' :: Semigroup m => (a -> m) -> Future a -> m # toNonEmpty :: Future a -> NonEmpty a # maximum :: Ord a => Future a -> a # minimum :: Ord a => Future a -> a # foldrMap1 :: (a -> b) -> (a -> b -> b) -> Future a -> b # foldlMap1' :: (a -> b) -> (b -> a -> b) -> Future a -> b # foldlMap1 :: (a -> b) -> (b -> a -> b) -> Future a -> b # foldrMap1' :: (a -> b) -> (a -> b -> b) -> Future a -> b # | |
| Traversable Future Source # | |
| Applicative Future Source # | |
| Functor Future Source # | |
| Comonad Future Source # | |
| ComonadApply Future Source # | |
| Alt Future Source # | |
| Apply Future Source # | |
| Extend Future Source # | |
| Traversable1 Future Source # | |
| IsList (Future a) Source # | |
| Show a => Show (Future a) Source # | |
| type Item (Future a) Source # | |
Defined in Data.Stream.Future.Skew | |
length :: Foldable t => t a -> Int #
Returns the size/length of a finite structure as an Int. The
default implementation just counts elements starting with the leftmost.
Instances for structures that can compute the element count faster
than via element-by-element counting, should provide a specialised
implementation.
Examples
Basic usage:
>>>length []0
>>>length ['a', 'b', 'c']3>>>length [1..]* Hangs forever *
Since: base-4.8.0.0