-- 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.5 -- | FoldMap lists: lists represented by their foldMap function. -- -- 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
--   
module Data.FMList -- | FMList is a foldMap function wrapped up in a newtype. newtype FMList a FM :: (forall b. (Monoid b) => (a -> b) -> b) -> FMList a unFM :: FMList a -> forall b. (Monoid b) => (a -> b) -> b -- | The function 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 pair :: a -> a -> FMList a append :: FMList a -> FMList a -> FMList 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 -- | List of elements of a structure. toList :: (Foldable t) => t a -> [a] flatten :: (Foldable t) => FMList (t 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 -- | unfold builds a list from a seed value. The function takes the -- seed and returns an FMList (or any other Foldable -- instance) of values. If the value is Right a, then -- a is appended to the result, and if the value is Left -- b, then b is used as seed value in a recursive call. -- -- A simple use of unfold (simulating unfoldl): -- --
--   *> unfold (\b -> if b == 0 then empty else Left (b-1) `pair` Right b) 10
--   fromList [1,2,3,4,5,6,7,8,9,10]
--   
unfold :: (Foldable t) => (b -> t (Either b a)) -> b -> FMList a -- | unfoldr builds an FMList from a seed value from left to -- right. The function takes the element and returns Nothing if it -- is done producing the list or returns Just (a,b), in -- which case, a is a appended to the result and b is -- used as the next seed value in a recursive call. -- -- A simple use of unfoldr: -- --
--   *> unfoldr (\b -> if b == 0 then Nothing else Just (b, b-1)) 10
--   fromList [10,9,8,7,6,5,4,3,2,1]
--   
unfoldr :: (b -> Maybe (a, b)) -> 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