-- 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:
--
--
-- m >>= g
-- = flatten (fmap g m)
-- = flatten . fmap g $ m
-- = transform foldMap . transform (. g) $ m
-- = transform ((. g) . foldMap) m
-- = transform (\f -> foldMap f . g) m
--
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