pandora-0.2.1: A box of patterns and paradigms
Pandora.Paradigm.Structure.Specific.Stack
data Stack a Source #
Linear data structure that serves as a collection of elements
Defined in Pandora.Paradigm.Structure.Specific.Stack
Associated Types
type Primary Stack a :: Type Source #
Methods
unwrap :: Stack a -> Primary Stack a Source #
(<$>) :: (a -> b) -> Stack a -> Stack b Source #
comap :: (a -> b) -> Stack a -> Stack b Source #
(<$) :: a -> Stack b -> Stack a Source #
($>) :: Stack a -> b -> Stack b Source #
void :: Stack a -> Stack () Source #
loeb :: Stack (Stack a -> a) -> Stack a Source #
(<&>) :: Stack a -> (a -> b) -> Stack b Source #
(<$$>) :: Covariant u => (a -> b) -> ((Stack :. u) := a) -> (Stack :. u) := b Source #
(<$$$>) :: (Covariant u, Covariant v) => (a -> b) -> ((Stack :. (u :. v)) := a) -> (Stack :. (u :. v)) := b Source #
(<$$$$>) :: (Covariant u, Covariant v, Covariant w) => (a -> b) -> ((Stack :. (u :. (v :. w))) := a) -> (Stack :. (u :. (v :. w))) := b Source #
(<&&>) :: Covariant u => ((Stack :. u) := a) -> (a -> b) -> (Stack :. u) := b Source #
(<&&&>) :: (Covariant u, Covariant v) => ((Stack :. (u :. v)) := a) -> (a -> b) -> (Stack :. (u :. v)) := b Source #
(<&&&&>) :: (Covariant u, Covariant v, Covariant w) => ((Stack :. (u :. (v :. w))) := a) -> (a -> b) -> (Stack :. (u :. (v :. w))) := b Source #
(<*>) :: Stack (a -> b) -> Stack a -> Stack b Source #
apply :: Stack (a -> b) -> Stack a -> Stack b Source #
(*>) :: Stack a -> Stack b -> Stack b Source #
(<*) :: Stack a -> Stack b -> Stack a Source #
forever :: Stack a -> Stack b Source #
(<**>) :: Applicative u => ((Stack :. u) := (a -> b)) -> ((Stack :. u) := a) -> (Stack :. u) := b Source #
(<***>) :: (Applicative u, Applicative v) => ((Stack :. (u :. v)) := (a -> b)) -> ((Stack :. (u :. v)) := a) -> (Stack :. (u :. v)) := b Source #
(<****>) :: (Applicative u, Applicative v, Applicative w) => ((Stack :. (u :. (v :. w))) := (a -> b)) -> ((Stack :. (u :. (v :. w))) := a) -> (Stack :. (u :. (v :. w))) := b Source #
(<+>) :: Stack a -> Stack a -> Stack a Source #
alter :: Stack a -> Stack a -> Stack a Source #
empty :: Stack a Source #
point :: a -> Stack a Source #
(->>) :: (Pointable u, Applicative u) => Stack a -> (a -> u b) -> (u :. Stack) := b Source #
traverse :: (Pointable u, Applicative u) => (a -> u b) -> Stack a -> (u :. Stack) := b Source #
sequence :: (Pointable u, Applicative u) => (Stack :. u) a -> (u :. Stack) := a Source #
(->>>) :: (Pointable u, Applicative u, Traversable v) => ((v :. Stack) := a) -> (a -> u b) -> (u :. (v :. Stack)) := b Source #
(->>>>) :: (Pointable u, Applicative u, Traversable v, Traversable w) => ((w :. (v :. Stack)) := a) -> (a -> u b) -> (u :. (w :. (v :. Stack))) := b Source #
(->>>>>) :: (Pointable u, Applicative u, Traversable v, Traversable w, Traversable j) => ((j :. (w :. (v :. Stack))) := a) -> (a -> u b) -> (u :. (j :. (w :. (v :. Stack)))) := b Source #
push :: a -> Stack a -> Stack a Source #
top :: Stack ~> Maybe Source #
pop :: Stack ~> Stack Source #
filter :: Predicate a -> Stack a -> Stack a Source #
linearize :: Traversable t => t ~> Stack Source #
Transform any traversable structure into a stack