Isomorphisms

sealed abstract
class Object
trait Matchable
class Any

Type members

Classlikes

trait Iso[Arr[_, _], A, B]

Isomorphism for arrows of kind * -> * -> *

Isomorphism for arrows of kind * -> * -> *

trait Iso2[Arr[_[_], _[_]], F[_], G[_]]

Isomorphism for arrows of kind (* -> ) -> ( -> *) -> *

Isomorphism for arrows of kind (* -> ) -> ( -> *) -> *

trait Iso3[Arr[_[_, _], _[_, _]], F[_, _], G[_, _]]

Isomorphism for arrows of kind (* -> * -> ) -> ( -> * -> *) -> *

Isomorphism for arrows of kind (* -> * -> ) -> ( -> * -> *) -> *

trait IsoBifunctorTemplate[F[_, _], G[_, _]] extends IsoBifunctor[F, G] with IsoBifunctorTemplate0[F, G]

Convenience template trait to implement <~~>

Convenience template trait to implement <~~>

object IsoFunctor
trait IsoFunctorTemplate[F[_], G[_]] extends IsoFunctor[F, G] with IsoFunctorTemplate0[F, G]

Convenience template trait to implement <~>

Convenience template trait to implement <~>

object IsoSet

Types

type <=>[A, B] = IsoSet[A, B]

Alias for IsoSet

Alias for IsoSet

type <~>[F[_], G[_]] = IsoFunctor[F, G]

Alias for IsoFunctor

Alias for IsoFunctor

type <~~>[F[_, _], G[_, _]] = IsoBifunctor[F, G]

Alias for IsoBifunctor

Alias for IsoBifunctor

type IsoBifunctor[F[_, _], G[_, _]] = Iso3[~~>, F, G]
type IsoFunctor[F[_], G[_]] = Iso2[[F[_], G[_]] =>> NaturalTransformation[F, G], F, G]

Natural isomorphism between functors

Natural isomorphism between functors

type IsoSet[A, B] = Iso[Function1, A, B]

Set isomorphism

Set isomorphism

Value members

Concrete methods

def commutative[A, B](i: IsoSet[A, B]): IsoSet[B, A]

Set isomorphism is commutative

Set isomorphism is commutative

def naturalCommutative[F[_], G[_]](i: IsoFunctor[F, G]): IsoFunctor[G, F]

Natural isomorphism is commutative

Natural isomorphism is commutative

def naturalRefl[F[_]]: IsoFunctor[F, F]

Natural isomorphism is reflexive

Natural isomorphism is reflexive

def refl[A]: IsoSet[A, A]

Set isomorphism is reflexive

Set isomorphism is reflexive