Copyright | (c) 2019-2023 Emily Pillmore |
---|---|
License | BSD-style |
Maintainer | Emily Pillmore <emilypi@cohomolo.gy> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Internal module exposing the constructors for
NonEmptyVector
and NonEmptyMVector
.
Warning: Since the constructors are exposed here, by using this module, you take on the risks that you break the non-emptiness invariants of the main modules. Use at your own risk.
Since: 0.2.1.0
Synopsis
- newtype NonEmptyVector a = NonEmptyVector {}
- newtype NonEmptyMVector s a = NonEmptyMVector {}
- type NonEmptyIOVector = NonEmptyMVector RealWorld
- type NonEmptySTVector s = NonEmptyMVector s
Immutable boxed vectors
newtype NonEmptyVector a Source #
NonEmptyVector
is a thin wrapper around Vector
that
witnesses an API requiring non-empty construction,
initialization, and generation of non-empty vectors by design.
A newtype wrapper was chosen so that no new pointer indirection
is introduced when working with Vector
s, and all performance
characteristics inherited from the Vector
API still apply.
Since: 0.2.1.0
Instances
Mutable boxed vectors
newtype NonEmptyMVector s a Source #
NonEmptyMVector
is a thin wrapper around MVector
that
witnesses an API requiring non-empty construction,
initialization, and generation of non-empty vectors by design.
A newtype wrapper was chosen so that no new pointer indirection
is introduced when working with MVector
s, and all performance
characteristics inherited from the MVector
API still apply.
Since: 0.2.1.0
Mutable vector aliases
type NonEmptyIOVector = NonEmptyMVector RealWorld Source #
NonEmptyMVector
parametrized by PrimState
Since: 0.2.1.0
type NonEmptySTVector s = NonEmptyMVector s Source #
NonEmptyMVector
parametrized by ST
Since: 0.2.1.0