-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | FoldMap lists -- -- FoldMap lists are lists represented by their foldMap function. FoldMap -- lists have O(1) cons, snoc and append, just like DLists, but other -- operations might have favorable performance characteristics as well. -- These wild claims are still completely unverified though. @package fmlist @version 0.4 -- | FoldMap lists: lists represented by their foldMap function. module Data.FMList -- | FMList is a foldMap function wrapped up in a newtype. Examples: -- --
--   -- A right-infinite list
--   c = 1 `cons` c
--   
-- --
--   -- A left-infinite list
--   d = d `snoc` 2
--   
-- --
--   -- A middle-infinite list ??
--   e = c `append` d
--   
-- --
--   *> head e
--   1
--   *> last e
--   2
--   
newtype FMList a FM :: (forall b. (Monoid b) => (a -> b) -> b) -> FMList a unFM :: FMList a -> forall b. (Monoid b) => (a -> b) -> b -- | Transform transforms a list by changing the map function that is -- passed to foldMap. It has the following property: -- --
--   transform a . transform b = transform (b . a)
--   
-- -- For example: -- -- transform :: (forall b. (Monoid b) => (a -> b) -> (c -> b)) -> FMList c -> FMList a -- | The identity of <|> empty :: (Alternative f) => forall a. f a singleton :: a -> FMList a cons :: a -> FMList a -> FMList a snoc :: FMList a -> a -> FMList a append :: FMList a -> FMList a -> FMList a -- | List of elements of a structure. toList :: (Foldable t) => t a -> [a] fromList :: [a] -> FMList a fromFoldable :: (Foldable f) => f a -> FMList a null :: FMList a -> Bool length :: FMList a -> Int genericLength :: (Num b) => FMList a -> b head :: FMList a -> a tail :: FMList a -> FMList a last :: FMList a -> a init :: FMList a -> FMList a reverse :: FMList a -> FMList a flatten :: FMList (FMList a) -> FMList a filter :: (a -> Bool) -> FMList a -> FMList a take :: (Ord n, Num n) => n -> FMList a -> FMList a drop :: (Ord n, Num n) => n -> FMList a -> FMList a takeWhile :: (a -> Bool) -> FMList a -> FMList a dropWhile :: (a -> Bool) -> FMList a -> FMList a zip :: FMList a -> FMList b -> FMList (a, b) zipWith :: (a -> b -> c) -> FMList a -> FMList b -> FMList c iterate :: (a -> a) -> a -> FMList a repeat :: a -> FMList a unfoldr :: (b -> Maybe (a, b)) -> b -> FMList a unfoldl :: (b -> Maybe (b, a)) -> b -> FMList a instance (Show a) => Show (FMList a) instance Alternative FMList instance MonadPlus FMList instance Monoid (FMList a) instance Applicative FMList instance Monad FMList instance Traversable FMList instance Foldable FMList instance Functor FMList