package prelude
- Alphabetic
- By Inheritance
- prelude
- ZivariantSyntax
- ZSetSyntax
- ZNonEmptySetSyntax
- PartialOrdSyntax
- OrdSyntax
- NonEmptySetSyntax
- NonEmptyListSyntax
- NonEmptyForEachSyntax
- NewtypeFExports
- InverseSyntax
- InvariantSyntax
- IdentitySyntax
- IdentityEitherSyntax
- IdentityBothSyntax
- IdExports
- HashSyntax
- ForEachSyntax
- EqualSyntax
- DivariantSyntax
- DebugSyntax
- CovariantSyntax
- ContravariantSyntax
- ConstExports
- CommutativeEitherSyntax
- CommutativeBothSyntax
- BicovariantSyntax
- AssociativeFlattenSyntax
- AssociativeEitherSyntax
- AssociativeComposeSyntax
- AssociativeBothSyntax
- AssociativeSyntax
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Package Members
Type Members
- type <=>[A, B] = Equivalence[A, B]
- type AnyF[_] = Any
- implicit final class AnySyntax[A] extends AnyVal
- sealed trait AnyType[A] extends AnyRef
- trait Associative[A] extends AnyRef
The
Associative[A]
type class describes an associative binary operator for a typeA
.The
Associative[A]
type class describes an associative binary operator for a typeA
. For example, addition for integers, and string concatenation for strings.Associative
is at the top of the hierarchy for abstracting over operations to combine types because while there are some operations that are not associative but do obey other laws, it is generally difficult to combine more than two values in interesting ways with these operators, and thus to build solutions to more complicated problems out of solutions to simpler ones.For example, the mean of two numbers is an operation that is commutative but not associative. However, the lack of associativity is an indication that we can't combine the means of multiple values in an interesting way with this definition. If we attempt to take the mean of three values we always place twice as much weight on one number as the others, which is rarely what we want.
If we instead define this operation using a
StatsCounter
object then means can be combined in ways that are associative, commutative, and have an identity element, supporting much more interesting modes of composition. - trait AssociativeBoth[F[_]] extends AnyRef
An associative binary operator that combines two values of types
F[A]
andF[B]
to produce anF[(A, B)]
.An associative binary operator that combines two values of types
F[A]
andF[B]
to produce anF[(A, B)]
.- Annotations
- @implicitNotFound()
- trait AssociativeBothSyntax extends AnyRef
- implicit class AssociativeBothContravariantOps[F[-_], A] extends AnyRef
Provides infix syntax for associative operations for contravariant types.
Provides infix syntax for associative operations for contravariant types.
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothCovariantOps[F[+_], A] extends AnyRef
Provides infix syntax for associative operations for covariant types.
Provides infix syntax for associative operations for covariant types.
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothOps[F[_], A] extends AnyRef
Provides infix syntax for associative operations for invariant types.
Provides infix syntax for associative operations for invariant types.
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple10Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple11Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple12Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple13Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple14Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple15Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple16Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple17Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple18Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple19Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple20Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple21Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple22Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple2Ops[F[+_], T1, T2] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple3Ops[F[+_], T1, T2, T3] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple4Ops[F[+_], T1, T2, T3, T4] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple5Ops[F[+_], T1, T2, T3, T4, T5] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple6Ops[F[+_], T1, T2, T3, T4, T5, T6] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple7Ops[F[+_], T1, T2, T3, T4, T5, T6, T7] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple8Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- implicit class AssociativeBothTuple9Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9] extends AnyRef
- Definition Classes
- AssociativeBothSyntax
- trait AssociativeCompose[=>:[-_, +_]] extends AnyRef
- trait AssociativeComposeSyntax extends AnyRef
- implicit class AssociativeComposeOps[A, B, =>:[-_, +_]] extends AnyRef
- Definition Classes
- AssociativeComposeSyntax
- trait AssociativeEither[F[_]] extends AnyRef
An associative binary operator that combines two values of types
F[A]
andF[B]
to produce anF[Either[A, B]]
.An associative binary operator that combines two values of types
F[A]
andF[B]
to produce anF[Either[A, B]]
.- Annotations
- @implicitNotFound()
- trait AssociativeEitherSyntax extends AnyRef
- implicit class AssociativeEitherContravariantOps[F[-_], A] extends AnyRef
Provides infix syntax for associative operations for contravariant types.
Provides infix syntax for associative operations for contravariant types.
- Definition Classes
- AssociativeEitherSyntax
- implicit class AssociativeEitherCovariantOps[F[+_], A] extends AnyRef
Provides infix syntax for associative operations for covariant types.
Provides infix syntax for associative operations for covariant types.
- Definition Classes
- AssociativeEitherSyntax
- implicit class AssociativeEitherOps[F[_], A] extends AnyRef
Provides infix syntax for associative operations for invariant types.
Provides infix syntax for associative operations for invariant types.
- Definition Classes
- AssociativeEitherSyntax
- trait AssociativeFlatten[F[+_]] extends AnyRef
AssociativeFlatten
describes a type that can be "flattened" in an associative way.AssociativeFlatten
describes a type that can be "flattened" in an associative way. For example, if we have a list of lists of lists, we can flatten it by either flattening the two inner lists and then flattening the resulting lists, or flattening the two outer lists and then flattening that resulting list. Because the operation is associative, the resulting list is the same either way.- Annotations
- @implicitNotFound()
- trait AssociativeFlattenSyntax extends AnyRef
- implicit class AssociativeFlattenCovariantOps[F[+_], A] extends AnyRef
Provides infix syntax for flattening covariant types.
Provides infix syntax for flattening covariant types.
- Definition Classes
- AssociativeFlattenSyntax
- implicit class AssociativeFlattenOps[F[+_], A] extends AnyRef
Provides infix syntax for flattening types.
Provides infix syntax for flattening types.
- Definition Classes
- AssociativeFlattenSyntax
- trait AssociativeLowPriority extends AnyRef
- trait AssociativeSyntax extends AnyRef
- implicit class AssociativeOps[+A] extends AnyRef
Provides infix syntax for combining two values with an associative operation.
Provides infix syntax for combining two values with an associative operation.
- Definition Classes
- AssociativeSyntax
- trait Bicovariant[<=>[+_, +_]] extends RightCovariant[<=>]
- trait BicovariantSyntax extends AnyRef
- implicit class BicovariantOps[<=>[+_, +_], A, B] extends AnyRef
- Definition Classes
- BicovariantSyntax
- trait Commutative[A] extends Associative[A]
The
Commutative
type class describes a binary operator for a typeA
that is both associative and commutative.The
Commutative
type class describes a binary operator for a typeA
that is both associative and commutative. This means thata1 <> a2
is equal toa2 <> a1
for all valuesa1
anda2
. Examples of commutative operations include addition for integers, but not concatenation for strings.Commutative operators are useful because combining values with a commutative operation results in the same value regardless of the order in which values are combined, allowing us to combine values in the order that is most efficient and allowing us to return determinate values even when the order of original values is indeterminate.
- trait CommutativeBoth[F[_]] extends AssociativeBoth[F]
A commutative binary operator that combines two values of types
F[A]
andF[B]
to produce anF[(A, B)]
.A commutative binary operator that combines two values of types
F[A]
andF[B]
to produce anF[(A, B)]
.- Annotations
- @implicitNotFound()
- trait CommutativeBothSyntax extends AnyRef
- implicit class CommutativeBothContraVariantOps[F[-_], A] extends AnyRef
Provides infix syntax for commutative operations for contravariant types.
Provides infix syntax for commutative operations for contravariant types.
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothCovariantOps[F[+_], A] extends AnyRef
Provides infix syntax for commutative operations for covariant types.
Provides infix syntax for commutative operations for covariant types.
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothOps[F[_], A] extends AnyRef
Provides infix syntax for commutative operations for invariant types.
Provides infix syntax for commutative operations for invariant types.
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple10Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple11Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple12Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple13Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple14Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple15Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple16Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple17Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple18Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple19Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple20Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple21Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple22Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple2Ops[F[+_], T1, T2] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple3Ops[F[+_], T1, T2, T3] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple4Ops[F[+_], T1, T2, T3, T4] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple5Ops[F[+_], T1, T2, T3, T4, T5] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple6Ops[F[+_], T1, T2, T3, T4, T5, T6] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple7Ops[F[+_], T1, T2, T3, T4, T5, T6, T7] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple8Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- implicit class CommutativeBothTuple9Ops[F[+_], T1, T2, T3, T4, T5, T6, T7, T8, T9] extends AnyRef
- Definition Classes
- CommutativeBothSyntax
- trait CommutativeEither[F[_]] extends AssociativeEither[F]
A commutative binary operator that combines two values of types
F[A]
andF[B]
to produce anF[Either[A, B]]
.A commutative binary operator that combines two values of types
F[A]
andF[B]
to produce anF[Either[A, B]]
.- Annotations
- @implicitNotFound()
- trait CommutativeEitherSyntax extends AnyRef
- implicit class CommutativeEitherContravariantOps[F[-_], A] extends AnyRef
Provides infix syntax for commutative operations for contravariant types.
Provides infix syntax for commutative operations for contravariant types.
- Definition Classes
- CommutativeEitherSyntax
- implicit class CommutativeEitherCovariantOps[F[+_], A] extends AnyRef
Provides infix syntax for commutative operations for covariant types.
Provides infix syntax for commutative operations for covariant types.
- Definition Classes
- CommutativeEitherSyntax
- implicit class CommutativeEitherOps[F[_], A] extends AnyRef
Provides infix syntax for commutative operations for invariant types.
Provides infix syntax for commutative operations for invariant types.
- Definition Classes
- CommutativeEitherSyntax
- sealed trait Comparison extends Product with Serializable
- type Const[+A, +B] = Type[A]
- Definition Classes
- ConstExports
- trait ConstExports extends AnyRef
- trait Contravariant[F[-_]] extends ContravariantSubset[F, AnyType] with Invariant[F]
Contravariant[F]
provides implicit evidence thatF[-_]
is a contravariant endofunctor in the category of Scala objects.Contravariant[F]
provides implicit evidence thatF[-_]
is a contravariant endofunctor in the category of Scala objects.Contravariant
instances of typeF[A]
"consume" values of typeA
in some sense. For example,Equal[A]
takes two values of typeA
as input and returns aBoolean
indicating whether they are equal. Similarly, aOrd[A]
takes two values of typeA
as input and returns anOrdering
with the result of comparing them andHash
takes anA
value and returns anInt
.Common examples of contravariant instances in ZIO include effects with regard to their environment types, sinks with regard to their input type, and polymorphic queues and references regarding their input types.
Contravariant
instances support acontramap
operation, which allows transforming the input type given a function from the new input type to the old input type. For example, if we have anOrd[Int]
that allows us to compare two integers and we have a functionString => Int
that returns the length of a string, then we can construct anOrd[String]
that compares strings by computing their lengths with the provided function and comparing those. - trait ContravariantSubset[F[-_], Subset[_]] extends AnyRef
- trait ContravariantSyntax extends AnyRef
- implicit class ContravariantOps[F[-_], A] extends AnyRef
Provides infix syntax for mapping over covariant values.
Provides infix syntax for mapping over covariant values.
- Definition Classes
- ContravariantSyntax
- trait Covariant[F[+_]] extends CovariantSubset[F, AnyType] with Invariant[F]
Covariant[F]
provides implicit evidence thatF[+_]
is a covariant endofunctor in the category of Scala objects.Covariant[F]
provides implicit evidence thatF[+_]
is a covariant endofunctor in the category of Scala objects.Covariant instances of type
F[A]
"produce" values of typeA
in some sense. In some cases, such as with aList[A]
, this means that they contain values of typeA
, in which case we can simply access the elements of the collection. In other cases it means that output values of typeA
which may not already exists, such as with aFunction0[A]
that producesA
values when invoked.Common examples of covariant instances in ZIO includes effects with respect to their error and value types, sinks with respect to their error and output types, and queues and references with respect to their error and output types.
Covariant
instances support amap
operation which allows transforming the output type given a function from the old output type to the new output type. For example, if we have aList[String]
and a functionString => Int
that returns the length of a string, then we can construct aList[Int]
with the length of each string. - trait CovariantSubset[F[+_], Subset[_]] extends AnyRef
- trait CovariantSyntax extends AnyRef
- implicit class CovariantOps[F[+_], A] extends AnyRef
Provides infix syntax for mapping over covariant values.
Provides infix syntax for mapping over covariant values.
- Definition Classes
- CovariantSyntax
- trait Debug[-A] extends AnyRef
Debug
is an abstraction that describes the ability to render a value of typeA
to a human readable format for debugging purposes.Debug
is an abstraction that describes the ability to render a value of typeA
to a human readable format for debugging purposes.Debug
captures this information in a structured data format called aRepr
, or a "representation" of the data. This representation can then be rendered to a human readable format using aRenderer
, which knows how to render a representation to a specific human readable format. This two step process preserves information when creating the representation and allows rendering it in different ways. For example, we might want to render it as a simple string representation using theSimple
renderer or as valid Scala code that we could paste into a REPL with theScala
renderer.You can use
Repr
to create structured representations of your own data types and even implement your ownRenderer
, for example to render representations to JSON, though in most cases the built in renderers will be all that you need. - trait DebugSyntax extends AnyRef
- implicit final class DebugInterpolator extends AnyRef
- Definition Classes
- DebugSyntax
- implicit class DebugOps[A] extends AnyRef
- Definition Classes
- DebugSyntax
- trait DebugVersionSpecific extends AnyRef
- trait Derive[F[_], Typeclass[_]] extends AnyRef
Derive[F, Typeclass]
represents a universally quantified function fromTypeclass[A]
toTypeclass[F[A]]
for someF[_]
.Derive[F, Typeclass]
represents a universally quantified function fromTypeclass[A]
toTypeclass[F[A]]
for someF[_]
. You can think ofDerive
as a "recipe" for building aTypeclass[F[A]]
instance given aTypeclass[A]
.For example, if we know how to compare values of type
A
for equality then we can compare lists with elements of typeA
for equality by checking that the length of the lists is the same and each pair of corresponding elements are equal. And we can do this for any typeA
as long as it has anEqual
instance.This is used by the library to derive typeclass instances for higher kinded types given typeclass instances for the type they are parameterized on.
- type DeriveAssociative[F[_]] = Derive[F, Associative]
- type DeriveCommutative[F[_]] = Derive[F, Commutative]
- type DeriveDebug[F[_]] = Derive[F, Debug]
- type DeriveEqual[F[_]] = Derive[F, Equal]
- type DeriveHash[F[_]] = Derive[F, Hash]
- type DeriveIdentity[F[_]] = Derive[F, Identity]
- type DeriveInverse[F[_]] = Derive[F, Inverse]
- type DeriveOrd[F[_]] = Derive[F, Ord]
- trait Divariant[=>:[-_, +_]] extends RightCovariant[=>:]
- trait DivariantSyntax extends AnyRef
- implicit class DivariantOps[=>:[-_, +_], A, B] extends AnyRef
- Definition Classes
- DivariantSyntax
- type EReader[-R, +E, +A] = ZPure[Nothing, Unit, Unit, R, E, A]
- type EState[S, +E, +A] = ZPure[Nothing, S, S, Any, E, A]
- type EWriter[+W, +E, +A] = ZPure[W, Unit, Unit, Any, E, A]
- trait Equal[-A] extends AnyRef
Equal[A]
provides implicit evidence that two values of typeA
can be compared for equality.Equal[A]
provides implicit evidence that two values of typeA
can be compared for equality.- Annotations
- @implicitNotFound()
- trait EqualSyntax extends AnyRef
- implicit class EqualOps[A] extends AnyRef
Provides infix syntax for comparing two values for equality.
Provides infix syntax for comparing two values for equality.
- Definition Classes
- EqualSyntax
- trait Equivalence[A, B] extends PartialEquivalence[A, B, Nothing, Nothing]
An
Equivalence[A, B]
defines an equivalence between two typesA
andB
.An
Equivalence[A, B]
defines an equivalence between two typesA
andB
. These types represent different ways to store the same information.For example, a
List[Byte]
is equivalent to aVector[Byte]
. Similarly, aList[Char]
is equivalent to aString
.Equivalences are symmetrical. So if
A
is equivalent toB
, thenB
is equivalent toA
. - trait ForEach[F[+_]] extends Covariant[F]
ForEach
is an abstraction that describes the ability to iterate over a collection, performing an effect for each element in the collection and returning a collection with the same shape in the context of the effect.ForEach
is an abstraction that describes the ability to iterate over a collection, performing an effect for each element in the collection and returning a collection with the same shape in the context of the effect.By choosing the appropriate effect type to traverse with a wide range of operations on collections can be described. In particular, by traversing with state we can describe folds which allow implementing a wide variety of collection operations that produce summaries from a collection of values.
- trait ForEachSyntax extends AnyRef
- implicit class FlipOps[F[+_], G[+_], A] extends AnyRef
Provides infix syntax for flip.
Provides infix syntax for flip.
- Definition Classes
- ForEachSyntax
- implicit class ForEachOps[F[+_], A] extends AnyRef
Provides infix syntax for traversing collections.
Provides infix syntax for traversing collections.
- Definition Classes
- ForEachSyntax
- trait Hash[-A] extends Equal[A]
Hash[A]
provides implicit evidence that a value of typeA
can be hashed.Hash[A]
provides implicit evidence that a value of typeA
can be hashed.- Annotations
- @implicitNotFound()
- trait HashSyntax extends AnyRef
- implicit class HashOps[A] extends AnyRef
Provides infix syntax for hashing a value.
Provides infix syntax for hashing a value.
- Definition Classes
- HashSyntax
- type Id[+A] = Type[A]
- Definition Classes
- IdExports
- trait IdExports extends AnyRef
- trait Idempotent[A] extends Associative[A]
The
Idempotent
type class describes a binary operator for a typeA
that is both associative and produces the same value when combining two identical values.The
Idempotent
type class describes a binary operator for a typeA
that is both associative and produces the same value when combining two identical values. This means thata <> a
is equal toa
for all valuesa
. Example of idempotent operations is union of sets, but not addition of integers.Idempotent operators are useful because combining the values with an idempotent operation results in the same value regardless of the number of values are combined, allowing us to optimize out unnecessary combinations of the same values.
- trait Identity[A] extends Associative[A]
The
Identity
type class describes an associative binary operator for a typeA
that also has an identity element.The
Identity
type class describes an associative binary operator for a typeA
that also has an identity element. Combining any value with the identity element on either the left or the right must return the original value unchanged. For example, zero is an identity element for integer addition and the empty string is an identity element for string concatenation.Operators with an identity element are useful because the identity element provides a sensible default value when combining values of a type and no values exist.
- trait IdentityBoth[F[_]] extends AssociativeBoth[F]
A binary operator that combines two values of types
F[A]
andF[B]
to produce anF[(A, B)]
with an identity.A binary operator that combines two values of types
F[A]
andF[B]
to produce anF[(A, B)]
with an identity.- Annotations
- @implicitNotFound()
- trait IdentityBothSyntax extends AnyRef
- implicit class IdentityBothAnyOps[A] extends AnyRef
- Definition Classes
- IdentityBothSyntax
- trait IdentityCompose[=>:[-_, +_]] extends AssociativeCompose[=>:]
- trait IdentityEither[F[_]] extends AssociativeEither[F]
A binary operator that combines two values of types
F[A]
andF[B]
to produce anF[Either[A, B]]
with an identity value.A binary operator that combines two values of types
F[A]
andF[B]
to produce anF[Either[A, B]]
with an identity value.- Annotations
- @implicitNotFound()
- trait IdentityEitherSyntax extends AnyRef
- implicit class IdentityEitherAnyOps extends AnyRef
- Definition Classes
- IdentityEitherSyntax
- trait IdentityFlatten[F[+_]] extends AssociativeFlatten[F]
IdentityFlatten
described a type that can be "flattened" in an associative way and has an identity element with respect to that operation.IdentityFlatten
described a type that can be "flattened" in an associative way and has an identity element with respect to that operation. For example, with a list we can always vacuously add a layer by wrapping a list in another list constructor and flattening the resulting list always returns the original list unchanged.- Annotations
- @implicitNotFound()
- trait IdentitySyntax extends AnyRef
- implicit class IdentityOps[A] extends AnyRef
Provides infix syntax for combining two values with an associative operation.
Provides infix syntax for combining two values with an associative operation.
- Definition Classes
- IdentitySyntax
- trait Invariant[F[_]] extends AnyRef
- trait InvariantSyntax extends AnyRef
- implicit class InvariantOps[F[_], A] extends AnyRef
Provides infix syntax for mapping over invariant values.
Provides infix syntax for mapping over invariant values.
- Definition Classes
- InvariantSyntax
- trait InvariantVersionSpecific extends AnyRef
- trait Inverse[A] extends Identity[A]
The
Inverse
type class describes an associative binary operator for a typeA
that has an identity element and an inverse binary operator.The
Inverse
type class describes an associative binary operator for a typeA
that has an identity element and an inverse binary operator. Combining any value with itself with the inverse operator must return the identity element. For example, for integer addition zero is an identty element and subtraction is an inverse operation, because subtracting any value from itself always returns zero.Because
Inverse
defines a binary rather than a unary operator it can be used to describe inverse operations for types that do not have inverse values. For example, the natural numbers do not have inverses because the set of natural numbers does not include negative numbers. But we can still define a subtraction operation that is the inverse of addition for the natural numbers, since subtracting a number from itself always returns zero. - trait InverseSyntax extends AnyRef
- implicit class InverseOps[A] extends AnyRef
Provides infix syntax for combining two values with an inverse operation.
Provides infix syntax for combining two values with an inverse operation.
- Definition Classes
- InverseSyntax
- trait LowPriorityInvariantImplicits extends AnyRef
- trait LowPriorityNonEmptyListImplicits extends AnyRef
- trait LowPriorityValidationImplicits extends AnyRef
- trait LowPriorityZNonEmptySetImplicits extends AnyRef
- trait LowPriorityZSetImplicits extends AnyRef
- implicit final class MapSyntax[K, V] extends AnyVal
- type MultiSet[+A] = ZSet[A, Natural]
- abstract class Newtype[A] extends NewtypeVersionSpecific
The class of objects corresponding to newtypes.
The class of objects corresponding to newtypes. Users should implement an object that extends this class to create their own newtypes, specifying
A
as the underlying type to wrap.object Meter extends Newtype[Double] type Meter = Meter.Type
- trait NewtypeFExports extends AnyRef
- abstract class NewtypeF extends NewtypeModuleF.NewtypeF
The class of objects corresponding to parameterized newtypes.
The class of objects corresponding to parameterized newtypes. Users should implement an object that extends this class to create their own parameterized newtypes
object Sum extends NewtypeF type Sum[A] = Sum.Type[A]
- Definition Classes
- NewtypeFExports
- abstract class SubtypeF extends NewtypeModuleF.SubtypeF
The class of objects corresponding to parameterized subtypes.
The class of objects corresponding to parameterized subtypes. Users should implement an object that extends this class to create their own parameterized subtypes
object Sum extends SubtypeF type Sum[A] = Sum.Type[A]
- Definition Classes
- NewtypeFExports
- trait NewtypeVersionSpecific extends AnyRef
- trait NonEmptyForEach[F[+_]] extends ForEach[F]
A
NonEmptyForEach
describes aForEach
that is guaranteed to contain at least one element, such as aNonEmptyList
, aNonEmptyChunk
, or certain tree like data structures.A
NonEmptyForEach
describes aForEach
that is guaranteed to contain at least one element, such as aNonEmptyList
, aNonEmptyChunk
, or certain tree like data structures.Because of the additional information that there is always at least one element, certain operations are available on a
NonEmptyForEach
that are not available on aForEach
. For example, if an ordering is defined on the elements of aNonEmptyForEach
thenmin
andmax
are defined, whereas for aForEach
onlyminOption
andmaxOption
would be, since the collection might not contain any elements at all. - trait NonEmptyForEachSyntax extends AnyRef
- implicit class Flip1Ops[F[+_], G[+_], A] extends AnyRef
Provides infix syntax for flip1.
Provides infix syntax for flip1.
- Definition Classes
- NonEmptyForEachSyntax
- implicit class NonEmptyForEachOps[F[+_], A] extends AnyRef
Provides infix syntax for traversing collections.
Provides infix syntax for traversing collections.
- Definition Classes
- NonEmptyForEachSyntax
- sealed trait NonEmptyList[+A] extends AnyRef
A
NonEmptyList[A]
is a list of one or more values of type A.A
NonEmptyList[A]
is a list of one or more values of type A. Unlike aList
, aNonEmptyList
is guaranteed to contain at least one element. This additional structure allows some operations to be defined onNonEmptyList
that are not safe onList
, such ashead
andreduceAll
.For interoperability with Scala's collection library an implicit conversion is provided from
NonEmptyList
to the::
case ofList
. Operations that cannot preserve the guarantee that the resulting collection must have at least one element will return aList
instead. - trait NonEmptyListSyntax extends AnyRef
- implicit final class NonEmptyListConsOps[A] extends AnyRef
- Definition Classes
- NonEmptyListSyntax
- implicit final class NonEmptyListListOps[A] extends AnyRef
- Definition Classes
- NonEmptyListSyntax
- final class NonEmptyMap[K, V] extends AnyRef
A non-empty wrapper for the scala immutable map.
A non-empty wrapper for the scala immutable map. Note - this does not attempt to implement all features of map but what the author considers to be the "normal ones".
- trait NonEmptyMapSyntax extends AnyRef
- type NonEmptyMultiSet[+A] = ZNonEmptySet[A, Natural]
- final class NonEmptySet[A] extends AnyRef
- trait NonEmptySetSyntax extends AnyRef
- implicit final class NonEmptySetIterableOps[A] extends AnyRef
- Definition Classes
- NonEmptySetSyntax
- implicit final class NonEmptySetSetOps[A] extends AnyRef
- Definition Classes
- NonEmptySetSyntax
- final class NonEmptySortedMap[K, V] extends AnyRef
A non-empty wrapper for the scala immutable map.
A non-empty wrapper for the scala immutable map. Note - this does not attempt to implement all features of map but what the author considers to be the "normal ones".
- trait NonEmptySortedMapSyntax extends AnyRef
- final class NonEmptySortedSet[A] extends AnyRef
- trait NonEmptySortedSetSyntax extends AnyRef
- trait Ord[-A] extends PartialOrd[A]
Ord[A]
provides implicit evidence that values of typeA
have a total ordering.Ord[A]
provides implicit evidence that values of typeA
have a total ordering.- Annotations
- @implicitNotFound()
- trait OrdSyntax extends AnyRef
- implicit class OrdOps[A] extends AnyRef
Provides infix syntax for comparing two values with a total ordering.
Provides infix syntax for comparing two values with a total ordering.
- Definition Classes
- OrdSyntax
- sealed trait Ordering extends PartialOrdering
An
Ordering
is the result of comparing two values.An
Ordering
is the result of comparing two values. The result may beLessThan
,Equals
, orGreaterThan
. - sealed trait ParSeq[+Z <: Unit, +A] extends AnyRef
ParSeq
is a data type that represents some notion of "events" that can take place in parallel or in sequence.ParSeq
is a data type that represents some notion of "events" that can take place in parallel or in sequence. For example, aParSeq
parameterized on some error type could be used to model the potentially multiple ways that an application can fail. On the other hand, a ParSeqparameterized on some request type could be used to model a collection of requests to external data sources, some of which could be executed in parallel and some of which must be executed sequentially.
- trait PartialEquivalence[A, B, +E1, +E2] extends AnyRef
- Annotations
- @silent("Unused import")
- trait PartialOrd[-A] extends Equal[A]
PartialOrd[A]
provides implicit evidence that values of typeA
have a partial ordering.PartialOrd[A]
provides implicit evidence that values of typeA
have a partial ordering.- Annotations
- @implicitNotFound()
- trait PartialOrdSyntax extends AnyRef
- implicit class PartialOrdOps[A] extends AnyRef
Provides infix syntax for comparing two values with a total ordering.
Provides infix syntax for comparing two values with a total ordering.
- Definition Classes
- PartialOrdSyntax
- sealed trait PartialOrdering extends Product with Serializable
- type Reader[-R, +A] = ZPure[Nothing, Unit, Unit, R, Nothing, A]
- trait RightCovariant[<=>[_, +_]] extends AnyRef
- final class SafeFunction[-In, +Out] extends (In) => Out
A
SafeFunction
is a function that can be freely composed with the guarantee that functions of arbitrary size can be evaluated in constant stack space.A
SafeFunction
is a function that can be freely composed with the guarantee that functions of arbitrary size can be evaluated in constant stack space. It does this by maintaining each of the composed functions internally in a data structure and evaluating them in a loop when the function is called. - type State[S, +A] = ZPure[Nothing, S, S, Any, Nothing, A]
- abstract class Subtype[A] extends Newtype[A]
- trait TestAssertions extends AnyRef
Provides versions of assertions from _ZIO Test_ that use
Equal
,Ord
, andValidation
. - sealed trait These[+A, +B] extends AnyRef
These
is a data type representing a value that may either be aLeft
with anA
, aRight
with aB
, or aBoth
with anA
and aB
.These
is a data type representing a value that may either be aLeft
with anA
, aRight
with aB
, or aBoth
with anA
and aB
.These
can be useful to model certain domains where both values may be present in addition to one or the other. For example, in streaming applications we may want to consume values from two upstream producers concurrently. Depending on the timing of the producers either one producer, the other, or both producers may have values that are ready to be consumed. UsingThese
provides a convenient way to model all of these possibilities in a single "flat" data type.These
can also be useful for representing computations that may produce both a value and an error. For example, transferring money between two bank accounts might either succeed, fail completely if there are not sufficient funds, or succeed with some warnings if the sender's account balance would be very low after the transfer or the receiver's account has not been verified.These
allows modeling these types of computations and preserving information regarding all errors while still potentially returning a successful computation. - type Validation[+E, +A] = ZValidation[Nothing, E, A]
- type Writer[+W, +A] = ZPure[W, Unit, Unit, Any, Nothing, A]
- final class ZNonEmptySet[+A, +B] extends AnyRef
Similar to
ZSet
, aZNonEmptySet[A, B]
is a guaranteed non-empty set ofA
values whereB
represents some notion of "how many"A
values are included in the set.Similar to
ZSet
, aZNonEmptySet[A, B]
is a guaranteed non-empty set ofA
values whereB
represents some notion of "how many"A
values are included in the set. This can be the number of times each element appears in the set ifB
is a natural number, the probability associated with an element in the set ifB
is a rational number, or even whether an element appears at all ifB
is a boolean. - trait ZNonEmptySetSyntax extends AnyRef
- implicit final class ZNonEmptySetMapOps[+A] extends AnyRef
- Definition Classes
- ZNonEmptySetSyntax
- implicit final class ZNonEmptySetNonEmptyMultiSetOps[+A] extends AnyRef
- Definition Classes
- ZNonEmptySetSyntax
- final class ZSet[+A, +B] extends AnyRef
A
ZSet[A, B]
is a set ofA
values whereB
represents some notion of "how many"A
values are included in the set.A
ZSet[A, B]
is a set ofA
values whereB
represents some notion of "how many"A
values are included in the set. This can be the number of times each element appears in the set ifB
is a natural number, the probability associated with an element in the set ifB
is a rational number, or even whether an element appears at all ifB
is a boolean. - trait ZSetSyntax extends AnyRef
- implicit final class ZSetMapOps[+A] extends AnyRef
- Definition Classes
- ZSetSyntax
- implicit final class ZSetMultiSetOps[+A] extends AnyRef
- Definition Classes
- ZSetSyntax
- sealed trait ZValidation[+W, +E, +A] extends AnyRef
ZValidation
represents either a success of typeA
or a collection of one or more errors of typeE
along with in either case a log with entries of typeW
.ZValidation
represents either a success of typeA
or a collection of one or more errors of typeE
along with in either case a log with entries of typeW
. UnlikeEither
,ZValidation
does not "short circuit" on failures and instead allows accumulating multiple errors. This can be particularly useful in validating data, where we want to attempt to validate all of the data and retain information about all errors that arose, rather than failing at the first error. - trait Zivariant[Z[-_, +_, +_]] extends AnyRef
Abstract over type constructor with 3 parameters: on first as contravariant and on second and third as covariant.
- trait ZivariantSyntax extends AnyRef
- implicit class ZivariantOps[Z[-_, +_, +_], R, E, A] extends AnyRef
- Definition Classes
- ZivariantSyntax
Value Members
- val EReader: ZPure.type
- val EState: ZPure.type
- val EWriter: ZPure.type
- val MultiSet: ZSet.type
- val NonEmptyMultiSet: ZNonEmptySet.type
- val Reader: ZPure.type
- val State: ZPure.type
- val Validation: ZValidation.type
- val Writer: ZPure.type
- val any: Any
- object AnyType
- object Associative extends AssociativeLowPriority
- object AssociativeBoth
- object AssociativeCompose
- object AssociativeEither
- object AssociativeFlatten
- object Bicovariant
- case object BuildInfo extends Product with Serializable
This object was generated by sbt-buildinfo.
- object Commutative
- object CommutativeBoth
- object CommutativeEither
- object Comparison extends Serializable
- object Const extends prelude.NewtypeF
- Definition Classes
- ConstExports
- object Contravariant
- object Covariant
- object Debug extends DebugVersionSpecific
- object Derive
- object Divariant
- object Equal
- object Equivalence
- object ForEach
- object Hash
- object Id extends prelude.NewtypeF
- Definition Classes
- IdExports
- object Idempotent
- object Identity
- object IdentityBoth
- Annotations
- @silent("Unused import")
- object IdentityEither
- object IdentityFlatten
- object Invariant extends LowPriorityInvariantImplicits with InvariantVersionSpecific
- object Inverse
- object Newtype
- object NonEmptyForEach
- object NonEmptyList extends LowPriorityNonEmptyListImplicits
- object NonEmptyMap
- object NonEmptySet
- object NonEmptySortedMap
- object NonEmptySortedSet
- object Ord
- object Ordering extends Serializable
- object ParSeq
- object PartialEquivalence
- object PartialOrd
- object PartialOrdering extends Serializable
- object SafeFunction
- object These
- object ZNonEmptySet extends LowPriorityZNonEmptySetImplicits
- object ZSet extends LowPriorityZSetImplicits
- object ZValidation extends LowPriorityValidationImplicits
- object Zivariant
- object classic