c

scalaz

# ContravariantCoyoneda 

### Companion object ContravariantCoyoneda

#### sealed abstract class ContravariantCoyoneda[F[_], A] extends AnyRef

Decomposition of `fi.contramap(k)` into its components, as it is frequently convenient to apply `k` separately from sorting or whatever process with `fi`, even when `B` is unknown, which is very common.

This is isomorphic to `F` as long as `F` itself is a contravariant functor. The homomorphism from `F[A]` to `ContravariantCoyoneda[F,A]` exists even when `F` is not a contravariant functor.

See `ContravariantCoyonedaUsage.scala` in the scalaz source tree for an interesting usage demonstration.

As `ContravariantCoyoneda(o)(identity).unlift` = `o`, further factoring can occur as follows, for free:

```ContravariantCoyoneda(o contramap g)(f).unlift =
ContravariantCoyoneda(o)(g compose f).unlift```
Source
ContravariantCoyoneda.scala

Linear Supertypes
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. ContravariantCoyoneda
2. AnyRef
3. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

### Type Members

1. abstract type I

The pivot between `fi` and `k`, usually existential.

### Abstract Value Members

1. abstract val fi: F[I]

The underlying value.

2. abstract val k: (A) ⇒ I

The transformer function, to be lifted into `F` by `run`.

### Concrete Value Members

1. final def !=(arg0: Any)
Definition Classes
AnyRef → Any
2. final def ##(): Int
Definition Classes
AnyRef → Any
3. final def ==(arg0: Any)
Definition Classes
AnyRef → Any
4. final def asInstanceOf[T0]: T0
Definition Classes
Any
5. def clone()
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@native() @throws( ... )
6. final def contramap[B](f: (B) ⇒ A): Aux[F, B, I]

Simple function composition.

Simple function composition. Allows map fusion without touching the underlying `F`.

7. final def eq(arg0: AnyRef)
Definition Classes
AnyRef
8. def equals(arg0: Any)
Definition Classes
AnyRef → Any
9. def finalize(): Unit
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
10. final def getClass(): Class[_]
Definition Classes
AnyRef → Any
Annotations
@native()
11. def hashCode(): Int
Definition Classes
AnyRef → Any
Annotations
@native()
12. final def isInstanceOf[T0]
Definition Classes
Any
13. final def ne(arg0: AnyRef)
Definition Classes
AnyRef
14. final def notify(): Unit
Definition Classes
AnyRef
Annotations
@native()
15. final def notifyAll(): Unit
Definition Classes
AnyRef
Annotations
@native()
16. final def run(implicit F: Contravariant[F]): F[A]

Converts to `F[A]` given that `F` is a contravariant.

17. final def synchronized[T0](arg0: ⇒ T0): T0
Definition Classes
AnyRef
18. def toString()
Definition Classes
AnyRef → Any
19. final def trans[G[_]](f: ~>[F, G]): Aux[G, A, I]

Natural transformation.

20. final def unlift(implicit F: Contravariant[F]): F[A]

Alias for `run`.

Alias for `run`.

Annotations
@inline()
21. final def wait(): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
22. final def wait(arg0: Long, arg1: Int): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
23. final def wait(arg0: Long): Unit
Definition Classes
AnyRef
Annotations
@native() @throws( ... )