Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.SOP.NonEmpty
Contents
Description
Type-level non-empty lists
Synopsis
- data NonEmpty (xs ∷ [Type]) a where
- NonEmptyOne ∷ ∀ a x (xs1 ∷ [Type]). !a → NonEmpty (x ': xs1) a
- NonEmptyCons ∷ ∀ a (xs1 ∷ [Type]) x. !a → !(NonEmpty xs1 a) → NonEmpty (x ': xs1) a
- class IsNonEmpty (xs ∷ [a]) where
- isNonEmpty ∷ proxy xs → ProofNonEmpty xs
- data ProofNonEmpty (xs ∷ [a]) where
- ProofNonEmpty ∷ ∀ {a} (x ∷ a) (xs1 ∷ [a]). Proxy x → Proxy xs1 → ProofNonEmpty (x ': xs1)
- checkIsNonEmpty ∷ ∀ {a} (xs ∷ [a]). SListI xs ⇒ Proxy xs → Maybe (ProofNonEmpty xs)
- nonEmptyFromList ∷ ∀ (xs ∷ [Type]) a. SListI xs ⇒ [a] → Maybe (NonEmpty xs a)
- nonEmptyHead ∷ ∀ (xs ∷ [Type]) a. NonEmpty xs a → a
- nonEmptyInit ∷ ∀ (xs ∷ [Type]) a. NonEmpty xs a → (Maybe (NonEmpty xs a), a)
- nonEmptyLast ∷ ∀ (xs ∷ [Type]) a. NonEmpty xs a → a
- nonEmptyMapOne ∷ ∀ m (xs ∷ [Type]) a. Alternative m ⇒ (a → m a) → NonEmpty xs a → m (NonEmpty xs a)
- nonEmptyMapTwo ∷ ∀ m (xs ∷ [Type]) a. Alternative m ⇒ (a → m a) → (a → a → m (a, a)) → NonEmpty xs a → m (NonEmpty xs a)
- nonEmptyStrictPrefixes ∷ ∀ (xs ∷ [Type]) a. NonEmpty xs a → [NonEmpty xs a]
- nonEmptyToList ∷ ∀ (xs ∷ [Type]) a. NonEmpty xs a → [a]
Documentation
data NonEmpty (xs ∷ [Type]) a where Source #
Non-empty variation on AtMost
Constructors
NonEmptyOne ∷ ∀ a x (xs1 ∷ [Type]). !a → NonEmpty (x ': xs1) a | |
NonEmptyCons ∷ ∀ a (xs1 ∷ [Type]) x. !a → !(NonEmpty xs1 a) → NonEmpty (x ': xs1) a |
Instances
(IsNonEmpty xs, SListI xs) ⇒ Applicative (NonEmpty xs) Source # | |
Defined in Data.SOP.NonEmpty | |
Functor (NonEmpty xs) Source # | |
Foldable (NonEmpty xs) Source # | |
Defined in Data.SOP.NonEmpty Methods fold ∷ Monoid m ⇒ NonEmpty xs m → m # foldMap ∷ Monoid m ⇒ (a → m) → NonEmpty xs a → m # foldMap' ∷ Monoid m ⇒ (a → m) → NonEmpty xs a → m # foldr ∷ (a → b → b) → b → NonEmpty xs a → b # foldr' ∷ (a → b → b) → b → NonEmpty xs a → b # foldl ∷ (b → a → b) → b → NonEmpty xs a → b # foldl' ∷ (b → a → b) → b → NonEmpty xs a → b # foldr1 ∷ (a → a → a) → NonEmpty xs a → a # foldl1 ∷ (a → a → a) → NonEmpty xs a → a # toList ∷ NonEmpty xs a → [a] # length ∷ NonEmpty xs a → Int # elem ∷ Eq a ⇒ a → NonEmpty xs a → Bool # maximum ∷ Ord a ⇒ NonEmpty xs a → a # minimum ∷ Ord a ⇒ NonEmpty xs a → a # | |
Traversable (NonEmpty xs) Source # | |
Defined in Data.SOP.NonEmpty | |
Show a ⇒ Show (NonEmpty xs a) Source # | |
Eq a ⇒ Eq (NonEmpty xs a) Source # | |
Proofs
class IsNonEmpty (xs ∷ [a]) where Source #
Methods
isNonEmpty ∷ proxy xs → ProofNonEmpty xs Source #
Instances
IsNonEmpty (x ': xs ∷ [a]) Source # | |
Defined in Data.SOP.NonEmpty Methods isNonEmpty ∷ proxy (x ': xs) → ProofNonEmpty (x ': xs) Source # |
data ProofNonEmpty (xs ∷ [a]) where Source #
Constructors
ProofNonEmpty ∷ ∀ {a} (x ∷ a) (xs1 ∷ [a]). Proxy x → Proxy xs1 → ProofNonEmpty (x ': xs1) |
checkIsNonEmpty ∷ ∀ {a} (xs ∷ [a]). SListI xs ⇒ Proxy xs → Maybe (ProofNonEmpty xs) Source #
Working with NonEmpty
nonEmptyInit ∷ ∀ (xs ∷ [Type]) a. NonEmpty xs a → (Maybe (NonEmpty xs a), a) Source #
Analogue of init
nonEmptyMapOne ∷ ∀ m (xs ∷ [Type]) a. Alternative m ⇒ (a → m a) → NonEmpty xs a → m (NonEmpty xs a) Source #
Apply the specified function to exactly one element
nonEmptyMapTwo ∷ ∀ m (xs ∷ [Type]) a. Alternative m ⇒ (a → m a) → (a → a → m (a, a)) → NonEmpty xs a → m (NonEmpty xs a) Source #
Variation on nonEmptyMapOne
where we try to apply the function to
pairs of elements