Module
Data.NonEmpty
This module defines a generic non-empty data structure, which adds an additional element to any container type.
#NonEmpty
data NonEmpty :: (Type -> Type) -> Type -> Type
data NonEmpty f a
A non-empty container of elements of type a.
import Data.NonEmpty
nonEmptyArray :: NonEmpty Array Int
nonEmptyArray = NonEmpty 1 [2,3]
import Data.List(List(..), (:))
nonEmptyList :: NonEmpty List Int
nonEmptyList = NonEmpty 1 (2 : 3 : Nil)
Constructors
NonEmpty a (f a)
Instances
(Show a, Show (f a)) => Show (NonEmpty f a)
(Eq1 f, Eq a) => Eq (NonEmpty f a)
(Eq1 f) => Eq1 (NonEmpty f)
(Ord1 f, Ord a) => Ord (NonEmpty f a)
(Ord1 f) => Ord1 (NonEmpty f)
(Functor f) => Functor (NonEmpty f)
(FunctorWithIndex i f) => FunctorWithIndex (Maybe i) (NonEmpty f)
(Foldable f) => Foldable (NonEmpty f)
(FoldableWithIndex i f) => FoldableWithIndex (Maybe i) (NonEmpty f)
(Traversable f) => Traversable (NonEmpty f)
(TraversableWithIndex i f) => TraversableWithIndex (Maybe i) (NonEmpty f)
(Foldable f) => Foldable1 (NonEmpty f)
(Unfoldable f) => Unfoldable1 (NonEmpty f)
#singleton
#(:|)
Operator alias for Data.NonEmpty.NonEmpty (right-associative / precedence 5)
An infix synonym for NonEmpty
.
nonEmptyArray :: NonEmpty Array Int
nonEmptyArray = 1 :| [2,3]
nonEmptyList :: NonEmpty List Int
nonEmptyList = 1 :| 2 : 3 : Nil
#foldl1
foldl1 :: forall f a. Foldable f => Warn (Text "\'Data.NonEmpty.foldl1\' is deprecated, use \'Data.Semigroup.Foldable.foldl1\' instead") => (a -> a -> a) -> NonEmpty f a -> a
Fold a non-empty structure, collecting results using a binary operation.
Deprecated, use 'Data.Semigroup.Foldable.foldl1' instead
foldl1 (+) (1 :| [2, 3]) == 6
#fromNonEmpty
fromNonEmpty :: forall f a r. (a -> f a -> r) -> NonEmpty f a -> r
Apply a function that takes the first
element and remaining elements
as arguments to a non-empty container.
For example, return the remaining elements multiplied by the first element:
fromNonEmpty (\x xs -> map (_ * x) xs) (3 :| [2, 1]) == [6, 3]
#oneOf
oneOf :: forall f a. Alternative f => NonEmpty f a -> f a
Returns the alt
(<|>
) result of:
- The first element lifted to the container of the remaining elements.
- The remaining elements.
import Data.Maybe(Maybe(..))
oneOf (1 :| Nothing) == Just 1
oneOf (1 :| Just 2) == Just 1
oneOf (1 :| [2, 3]) == [1,2,3]
#head
Modules
- Control.Alt
- Control.Alternative
- Control.Applicative
- Control.Apply
- Control.Biapplicative
- Control.Biapply
- Control.Bind
- Control.Category
- Control.Comonad
- Control.Extend
- Control.Lazy
- Control.Monad
- Control.Monad.ST
- Control.Monad.ST.Class
- Control.Monad.ST.Internal
- Control.Monad.ST.Ref
- Control.MonadPlus
- Control.MonadZero
- Control.Plus
- Control.Semigroupoid
- Data.Array
- Data.Array.NonEmpty
- Data.Array.NonEmpty.Internal
- Data.Array.Partial
- Data.Array.ST
- Data.Array.ST.Iterator
- Data.Array.ST.Partial
- Data.Bifoldable
- Data.Bifunctor
- Data.Bifunctor.Join
- Data.Bitraversable
- Data.Boolean
- Data.BooleanAlgebra
- Data.Bounded
- Data.Bounded.Generic
- Data.CommutativeRing
- Data.Comparison
- Data.Const
- Data.Decidable
- Data.Decide
- Data.Distributive
- Data.Divide
- Data.Divisible
- Data.DivisionRing
- Data.Either
- Data.Either.Inject
- Data.Either.Nested
- Data.Eq
- Data.Eq.Generic
- Data.Equivalence
- Data.EuclideanRing
- Data.Exists
- Data.Field
- Data.Foldable
- Data.FoldableWithIndex
- Data.Function
- Data.Functor
- Data.Functor.App
- Data.Functor.Clown
- Data.Functor.Compose
- Data.Functor.Contravariant
- Data.Functor.Coproduct
- Data.Functor.Coproduct.Inject
- Data.Functor.Coproduct.Nested
- Data.Functor.Costar
- Data.Functor.Flip
- Data.Functor.Invariant
- Data.Functor.Joker
- Data.Functor.Product
- Data.Functor.Product.Nested
- Data.Functor.Product2
- Data.FunctorWithIndex
- Data.Generic.Rep
- Data.HeytingAlgebra
- Data.HeytingAlgebra.Generic
- Data.Identity
- Data.Maybe
- Data.Maybe.First
- Data.Maybe.Last
- Data.Monoid
- Data.Monoid.Additive
- Data.Monoid.Alternate
- Data.Monoid.Conj
- Data.Monoid.Disj
- Data.Monoid.Dual
- Data.Monoid.Endo
- Data.Monoid.Generic
- Data.Monoid.Multiplicative
- Data.NaturalTransformation
- Data.Newtype
- Data.NonEmpty
- Data.Op
- Data.Ord
- Data.Ord.Down
- Data.Ord.Generic
- Data.Ord.Max
- Data.Ord.Min
- Data.Ordering
- Data.Predicate
- Data.Profunctor
- Data.Profunctor.Choice
- Data.Profunctor.Closed
- Data.Profunctor.Cochoice
- Data.Profunctor.Costrong
- Data.Profunctor.Join
- Data.Profunctor.Split
- Data.Profunctor.Star
- Data.Profunctor.Strong
- Data.Ring
- Data.Ring.Generic
- Data.Semigroup
- Data.Semigroup.First
- Data.Semigroup.Foldable
- Data.Semigroup.Generic
- Data.Semigroup.Last
- Data.Semigroup.Traversable
- Data.Semiring
- Data.Semiring.Generic
- Data.Show
- Data.Show.Generic
- Data.Symbol
- Data.Traversable
- Data.Traversable.Accum
- Data.Traversable.Accum.Internal
- Data.TraversableWithIndex
- Data.Tuple
- Data.Tuple.Nested
- Data.Unfoldable
- Data.Unfoldable1
- Data.Unit
- Data.Void
- Effect
- Foreign
- LocalDependency.Control.Alt
- LocalDependency.Control.Alternative
- LocalDependency.Control.Biapplicative
- LocalDependency.Control.Biapply
- LocalDependency.Control.Comonad
- LocalDependency.Control.Extend
- LocalDependency.Control.Lazy
- LocalDependency.Control.MonadPlus
- LocalDependency.Control.MonadZero
- LocalDependency.Control.Plus
- LocalDependency.Data.Bifoldable
- LocalDependency.Data.Bifunctor
- LocalDependency.Data.Bifunctor.Join
- LocalDependency.Data.Bitraversable
- LocalDependency.Data.Comparison
- LocalDependency.Data.Const
- LocalDependency.Data.Decidable
- LocalDependency.Data.Decide
- LocalDependency.Data.Distributive
- LocalDependency.Data.Divide
- LocalDependency.Data.Divisible
- LocalDependency.Data.Either
- LocalDependency.Data.Either.Inject
- LocalDependency.Data.Either.Nested
- LocalDependency.Data.Equivalence
- LocalDependency.Data.Exists
- LocalDependency.Data.Foldable
- LocalDependency.Data.FoldableWithIndex
- LocalDependency.Data.Functor.App
- LocalDependency.Data.Functor.Clown
- LocalDependency.Data.Functor.Compose
- LocalDependency.Data.Functor.Contravariant
- LocalDependency.Data.Functor.Coproduct
- LocalDependency.Data.Functor.Coproduct.Inject
- LocalDependency.Data.Functor.Coproduct.Nested
- LocalDependency.Data.Functor.Costar
- LocalDependency.Data.Functor.Flip
- LocalDependency.Data.Functor.Invariant
- LocalDependency.Data.Functor.Joker
- LocalDependency.Data.Functor.Product
- LocalDependency.Data.Functor.Product.Nested
- LocalDependency.Data.Functor.Product2
- LocalDependency.Data.FunctorWithIndex
- LocalDependency.Data.Identity
- LocalDependency.Data.Maybe
- LocalDependency.Data.Maybe.First
- LocalDependency.Data.Maybe.Last
- LocalDependency.Data.Monoid.Alternate
- LocalDependency.Data.Op
- LocalDependency.Data.Predicate
- LocalDependency.Data.Profunctor
- LocalDependency.Data.Profunctor.Choice
- LocalDependency.Data.Profunctor.Closed
- LocalDependency.Data.Profunctor.Cochoice
- LocalDependency.Data.Profunctor.Costrong
- LocalDependency.Data.Profunctor.Join
- LocalDependency.Data.Profunctor.Split
- LocalDependency.Data.Profunctor.Star
- LocalDependency.Data.Profunctor.Strong
- LocalDependency.Data.Semigroup.Foldable
- LocalDependency.Data.Semigroup.Traversable
- LocalDependency.Data.Traversable
- LocalDependency.Data.Traversable.Accum
- LocalDependency.Data.Traversable.Accum.Internal
- LocalDependency.Data.TraversableWithIndex
- LocalDependency.Data.Tuple
- LocalDependency.Data.Tuple.Nested
- LocalDependency.Effect
- LocalDependency.Safe.Coerce
- LocalDependency.Type.Equality
- LocalDependency.Unsafe.Coerce
- Partial
- Partial.Unsafe
- Prelude
- Prim
- Prim.Boolean
- Prim.Coerce
- Prim.Ordering
- Prim.Row
- Prim.RowList
- Prim.Symbol
- Prim.TypeError
- PureScript.Metadata
- Record.Unsafe
- Safe.Coerce
- Test.Miraculix
- Test.Miraculix.Assertion
- Test.Miraculix.FFI
- Test.Miraculix.Summary
- Test.Miraculix.TestTree
- Test.Miraculix.Typo
- Test.MiraculixLite
- Test.MiraculixLite.Assertion
- Test.MiraculixLite.FFI
- Test.MiraculixLite.Summary
- Test.MiraculixLite.TestTree
- Test.MiraculixLite.Typo
- Type.Data.Row
- Type.Data.RowList
- Type.Equality
- Type.Proxy
- Unsafe.Coerce